// ==UserScript==
// @name           Darksoul KOC Power Tools
// @namespace      darksoul
// @version        20140810a
// @include        *.kingdomsofcamelot.com/*main_src.php*
// @description    Enhancements and bug fixes for Kingdoms of Camelot
// @icon  http://www.gravatar.com/avatar/f9c545f386b902b6fe8ec3c73a62c524?r=PG&s=60&default=identicon
// @grant       unsafeWindow
// @grant       GM_deleteValue
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_listValues
// @grant       GM_addStyle
// @grant       GM_xmlhttpRequest
// @grant       GM_log
// @grant       GM_registerMenuCommand
// @license			http://creativecommons.org/licenses/by-nc-sa/3.0/
// ==/UserScript==
//Fixed weird bug with koc game
if (window.self.location != window.top.location) {
	if (window.self.location.href == window.parent.location.href) {
		return; //If iframe source is same as the parent don't load script
	}
}
//This value is used for statistics (https://nicodebelder.eu/kocReportView/Stats.html).
//Please change it to your Userscript project name.
var SourceName = "Darksoul Power Tools (SVN)";
var Version = '20140810a';
var Title = 'Darksoul Power Tools';
var DEBUG_BUTTON = true;
var DEBUG_TRACE = false;
var DEBUG_TRACE_DRAG = false;
var DEBUG_TRACE_AJAX = false;
var MAP_DELAY = 1500;
var DISABLE_POST_KNIGHT_SKILLS = false;
var DISABLE_POST_DEFENSES = false;
var ENABLE_TEST_TAB = false;
var SEND_ALERT_AS_WHISPER = false;
var TEST_WIDE = false;
var TEST_WIDE_CITIES = 7;
var ENABLE_ALERT_TO_CHAT = true;
var History = [];
var throttle = 10;
var FFVersion = getFirefoxVersion();
if (typeof SOUND_FILES == 'undefined') var SOUND_FILES = new Object();
if (typeof SOUND_FILES.whisper == 'undefined') {
	SOUND_FILES.whisper = new Object();
	SOUND_FILES.whisper.MP3 = 'data:audio/mp3;base64,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';
	SOUND_FILES.whisper.OGG = 'data:audio/ogg;base64,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4Rg6v/Djqaqvm64rDKcsC7/t68az+76yjK7r+6osC78q28Kx677z/L6wLKPs+sJqy8Kw2rYx3L5uLL9wHMtr68ox675RtnV8X3gKw/N0dV15Zl3H9nV040c4fsoAAIABBwCAABPKQKEhKwKAOAEAjySJomRZoihZliiKpui6omi6rqRppqlpnmlammeapmmqsimarixpmmlanmaamqeZpmiarmuapqyKpinLpmrKsmmasuy6sm27rmzbomnKsmmasmyapiy7sqvbruzquqRZpql5nmlqnmeapmrKsmmarqt5nmp6nmiqniiqqmqqqq2qqixbnmeamuippieKqmqqpq2aqirLpqrasmmqtmyqqm27quz6sm3rummqsm2qpi2bqmrbruzqsizbui9pmmlqnmeamueZpmmasmyaqitbnqeaniiqquaJpmqqqiybpqrKlueZqieKquqJnmuaqirLpmraqmmatmyqqi2bpirLrm37vuvKsm6qqmybqmrrpmrKsmzLvu/Kqu6KpinLpqrasmmqsi3bsu/Lsqz7omnKsmmqsm2qqi7Lsm0bs2z7umiasm2qpi2bqirbsi37uizbuu/Krm+rqqzrsi37uu76rnDrujC8smz7qqz6uivbum/rMtv2fUTTlGVTNW3bVFVZdmXZ9mXb9n3RNG1bVVVbNk3VtmVZ9n1Ztm1hNE3ZNlVV1k3VtG1Zlm1htmXhdmXZt2Vb9nXXlXVf133j12Xd5rqy7cuyrfuqq/q27vvCcOuu8AoAABhwAAAIMKEMFBqyEgCIAgAAjGGMMQiNUs45B6FRyjnnIGTOQQghlcw5CCGUkjkHoZSUMucglJJSCKGUlFoLIZSUUmsFAAAUOAAABNigKbE4QKEhKwGAVAAAg+NYlueZomrasmNJnieKqqmqtu1IlueJommqqm1bnieKpqmqruvrmueJommqquvqumiapqmqruu6ui6aoqmqquu6sq6bpqqqriu7suzrpqqqquvKriz7wqq6rivLsm3rwrCqruvKsmzbtm/cuq7rvu/7wpGt67ou/MIxDEcBAOAJDgBABTasjnBSNBZYaMhKACADAIAwBiGDEEIGIYSQUkohpZQSAAAw4AAAEGBCGSg0ZCUAEAMAABABIYMQQgghhBBCCCGEEEIIIYQQQuecc84555xzzgkA2I9wAJB6MDExhYWGrAQA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';
	SOUND_FILES.whisper.DEFAULT = '<span><object type="application/x-shockwave-flash" data="http://koc.god-like.org/power/swf/pdxminiplayer.swf" width="160" height="20"><param name="wmode" value="transparent" /><param name="movie" value="http://koc.god-like.org/power/swf/pdxminiplayer.swf" /><param name="flashvars" value="mp3=http://koc-power-tools.googlecode.com/svn/trunk/sounds/arrow.mp3&amp;autostart=1&amp;showtime=1&amp;volume=100" /></object></span>';
}
if (typeof SOUND_FILES.whisper2 == 'undefined') {
	SOUND_FILES.whisper2 = new Object();
	SOUND_FILES.whisper2.MP3 = 'data:audio/mp3;base64,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';
	SOUND_FILES.whisper2.OGG = 'data:audio/ogg;base64,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';
	SOUND_FILES.whisper2.DEFAULT = '<span><object type="application/x-shockwave-flash" data="http://koc.god-like.org/power/swf/pdxminiplayer.swf" width="160" height="20"><param name="wmode" value="transparent" /><param name="movie" value="http://koc.god-like.org/power/swf/pdxminiplayer.swf" /><param name="flashvars" value="mp3=http://koc-power-tools.googlecode.com/svn/trunk/sounds/DoorBell.mp3&amp;autostart=1&amp;showtime=1&amp;volume=100" /></object></span>';
}
if (typeof SOUND_FILES.allianceattack == 'undefined') {
	SOUND_FILES.allianceattack = new Object();
	SOUND_FILES.allianceattack.MP3 = 'data:audio/mp3;base64,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DDjAkinqvrffaHptCYupuacokAazVds3epLqkh+Yl28+////////y/uv////////l21E1GqZ0gqAMaaNW8ObYO/mOFBNYbMcFLWs1RCMaaNSyNy+NQpM4RAQ1S2UMqXc6y+QaA0uOdj3w+6PNDigFGb5pSYygzjTbWVhV2tdl0y/r+w7elUNP9GbNyGn+f6XZwy/z/Q9Ls5TDLsuS/0PU2WWWf/zgsRxKlImaAPawAFlljjj+sqaVRqU0tLS481lTUuOqaVRqm7jWpqaXU2WMpjMal1ruNLS2ebq0tLjzWVNVxNyCgn4Q1UwWCoiGQ8NlQzIgiiEHIqE0aBWOAlmbl83PdPhKHEchSJhDBQLhgWJiEsdKFyh0ZEQhGg+MEYoHxMKREMh4bGCMgUXSTSTg2ZFIWEI0HxgRkArRu3/+MkSEsVOHSiNAJ//BQmmGBn//pgaqoMt/+hCaYYGf/+FA1VQY7/8FCaYYGt/9hA1VQYrVVVF//OCxIsnAY0wCEsSOaaaQNammmiqqocrVVVXTTSJTEFNRTMuOTdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuOTdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/84LEswAAA0gAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45N1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/zgsT/AAADSAAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk3VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//OCxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVTEFNRTMuOTdVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/84LE/wAAA0gAAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy45N1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/zgsT/AAADSAAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk3VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//OCxP8AAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUQUdzdWJtYXJpbmVfZGl2ZV9ob3JuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/w==';
	SOUND_FILES.allianceattack.OGG = 'data:audio/ogg;base64,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';
	SOUND_FILES.allianceattack.DEFAULT = '<span><object type="application/x-shockwave-flash" data="http://koc.god-like.org/power/swf/pdxminiplayer.swf" width="160" height="20"><param name="wmode" value="transparent" /><param name="movie" value="http://koc.god-like.org/power/swf/pdxminiplayer.swf" /><param name="flashvars" value="mp3=http://koc-power-tools.googlecode.com/svn/trunk/sounds/AllianceAttack.mp3&amp;autostart=1&amp;showtime=1&amp;volume=100" /></object></span>';
}
if (typeof SOUND_FILES.alert == 'undefined') {
	SOUND_FILES.alert = new Object();
	SOUND_FILES.alert.OGG = 'data:audio/ogg;base64,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';
	SOUND_FILES.alert.DEFAULT = '<span><object type="application/x-shockwave-flash" data="http://koc.god-like.org/power/swf/pdxminiplayer.swf" width="160" height="20"><param name="wmode" value="transparent" /><param name="movie" value="http://koc.god-like.org/power/swf/pdxminiplayer.swf" /><param name="flashvars" value="mp3=http://sfx.god-like.info/alert.mp3&amp;autostart=1&amp;showtime=1&amp;volume=100" /></object></span>';
}
var URL_CASTLE_WARN = "";
var URL_CASTLE_BUT = "";
var URL_CASTLE_BUT_SEL = "";
var URL_PROVINCE_MAP = "%2F%2F%2F%2Ff%2F%2F%2Fv%2F8%2Ff3%2F%2Ff39%2Ff37%2F%2F%2Fpe%2F39%2F%2F%2FnO%2F37%2F%2F%2FlPf%2FnPf%2FlPHv9%2B%2Fv7%2F%2F3lO%2Fv5ubv7%2Ff3lPf3jO%2Fm7%2B%2F3jO%2F0lPfvlObm7%2Bb3jObm5u%2FvjN7m5ubvlObvjN7e5t3whN7e3ubmjObmhNbe1tbb3t7mjN7mhNbmhNbW1t7ehM7W1tTfe9TchM7O1s7OztbWe8XOzsXOxc7We8XWesXFzsXFxc7Oe73FxcXOe8XOc73Oc7XFtb69xdHYAL29vbW9vb3Fc7bGa7XFc7W1vbW1tbXSALW9a6rCY629a6yurq3KALXFAJjCWq21Y6uza6W1Y7W9AJy1Y6Okpa29AJ%2BtY621CJytWq21AJq9AKWwG5ucnJylWpSlWo2oUoylWpytAJSUlHyrSoyUlI%2BcWoycUoyUc4SeUoStAIyMlIyMjIyUUoSMjI2gAYSUUoSUSoSEjHuUSoSEhICEe3OhAHuEhHuMSoSUAHKOQnOMSmKYNHuUAHl7fHOEQmuSAGuEQnOMAHJzc3OEAGt7Omh7Qnt8AGN7Ompralp7Omt7AGNzOlpzOltzMVJ3MmN3AF9rOmFiY2trAEp6AFJrMUpsMSx%2BG1JrGVlbWmdjACh%2FAkprCEpjMUprAEpjKUJjKUJdQkpjCFBRU0hjAEJbOkJjCEJaKUdSRTpaOkJaGTpaKUJSOjpaIUpKSjpSOkJKSjFfBUJKQgB3ADpSITFSMR9eGDFSIQhrCAhrAEBBQzFQGTFSCClSGQBrADFSADFKIRlbBAhjAClKISlKGTg8OQBjAAhdCClKCCBLGAhaAEI6AClCGQBaABtKCCFCIQhSCCFCGSlBBwhSACFCEBlCISFCCCFCAC8xMgBSABlCEAhKCCA5GSE6EANKABk6EAhCCCkxABE7CBA6ECcpKQBCCAFAAAg6CBIwEAA6CBAxCCEhKQgxCB4hIQAxCAIxAAgpCAgpABkZIQApCBkZGQApABAZGQAhCAAhABAQGRAQEAAZAAgQEAgIEAgICAAICAAACAAAACwAAAAAxgLEAgAI%2FgABCBxIsKDBgwBCHAqlhgDChxAhFglEkY8DACkWhnEYsSNBG6xeCCSwJdShFCNLnvTIUuAhOQOnUAw0x%2BELSKG2tOyoQU4oSD9GjjFZQijRnRGLXArF5iKALTPlOLSBcwrSg0qWWhVINdRWAF2%2FXjXIgU%2BoQBoEpph5SKQDn2jHQpwSqiiAH5cuKRmIV6%2FchxouqRH4YmYglA7M8onw16AaiofCCFR6KejkvJb%2FEngc6JBOAmwg6wSQtXLjggTC%2FBQJQEOgUHKcuobt9DRXnBsBEJADeStdSDZsC1RyyLBIhQw5Im%2FYmLhhlBMrXswYKrfwgQ6GyWPFj8%2F1iJf4%2Fq2DJ06DA2vwuMO8%2FsIaP8th%2BLlaVx5A%2FPn1hRMI5C%2FUQFfiyWONAxqIkw4u%2FEhmGwGs6BOKOPj0AIAc%2FLACzzAXUciKPBgKpwQ%2F1nAHiUDD7LMOhwSEQB%2BCYl314TAsYkQeLvvslcKM%2FOxlW3b0hHIPLg085Y88J%2B51iD6s3MMKR8LdiI9IL9BjzTD4BPXCPVNW%2BR0Ah%2FwzIgBsDHliUJfgwwo%2Bl1ynATz4nJjmD%2FgMYw0%2BwcEpJ52NaSBPm%2FSMqCefIxahj5z0sGYbJA6us44GDNLDyj6H6OaKo5BeZ4OUrvwzWAr40LMOPYEAMAU%2FuIizDkq28eHpOvi8R4B2%2F9x5l9123TUWyKqtBhfeeOWdlx4%2F631XRD%2BSsbJObVsSRIA1oTjQwEVK9KNTqcj%2BFQY9ewa17DCk9WPVlN2OdloIVKIpkAPpQNLAs0%2F1s9eUTP5VQjqh2tAdAeLg0m4R%2BOq7hbvCHSJOCACEIk8Eegay7kVquJpvYyURoAE9aVJogwPrsDIhPxdnLFwIXgEQCD8oHbJOCM9KLE%2BadXB8HYP6yCNSIPikoGeaNNu88ndK4KNPpABcUl7KnEZ6SM3C2aDPFgQ4cBEk9GhQNABQS40P0HL1sM8Uz16k9RRNX3SJPFLrE6ptL5gNViAh2AvT2A64HTTZwo2dVh1WFcFPEf4pA8BKOgTIvaDTL6wT6bDFrkMA4n6nU%2B1OYb8AT6jLNstutNOK83hjDQcViD6GJjtQCBxewjYAfLh8NKqnvURhUKSnuQI%2BaO38Au1Js1JEOv4BMDsul%2FCR1upzp7WjQ0TwM0YIV4PFjxrMRyr4aQ0wBkCpgZt5SWxB00OwsZvvpAEc9%2Bhk9%2FXiEHA%2Btd%2F1AONF80EC3F3AhnudGutA8mTjF1ljDYOOA4D%2F4vUXDaQrf7oZhjjkJ5JoSeZfOjrNFvYRikvkRk66yder%2FtevxoSBghYMgH0cZEHdgAtjGrPNFp6nhtxAcGMveKHFbNOAfCmBD8GZEJouoRMHPOxmW%2F4SWFrY8B6R1axzIgPdoTSXkNKdrmXBId53Uhec1ElIdASBE7Pi5IDPzYwfodOMfYo4tRJczYyR4tSXTuMQjPVOCfsYRijwgQsCQOIeRdEf62wTAmss6gX78A4g%2BfCCWsVAbd%2BRQz9gskJchIKCBAjFogpGt8bI4R%2FDSAv4%2FLYoY2kSHsbj4zqWBgAfruNBhWKc3gaDNnpMIQz7U6BDqCWnICkwSLa5xDBU5Kd18G48KZiCt0QlLeF8jhUICgS%2BuLWt8zBzgH85EjJrJU0E8aGDNeSWbdRgIlzQo44NKwIA1NCPH4yBH0AY595sUyApzWkvZQrFMJ7nAHj4RwMeY%2F8PPhTEh31UEYxURJ3LGqO00WhxjhjyYhLDeJqABhSL2LnYOP1RBD4oMRD7YKi1yIiPERWNeR7t6HcwcMpzSZQP%2FejB0fKID7vwcU7iVFqoYhBIQNYLkcJR5CXaaAOHHAKMlwAlJUMpFw38QBxL2iT4PMlJ6y1oLVUKwAsIprRDAEF5AFglDXGBi55U6VXpA4ACsyMOW4b1NFPAhxJCAI9LOIAAU6VfHaJlFWGKK0%2BsmU8fn4khcG2LgDsJgUgIgItjCVY3hQ3Bw3yozdOowR%2BhEqYS4iNOcv6AsuoU52kMeLIGgOuwnrWGijS2phQas5IOBSMUUefP1k2ylBJ97A3%2BL6rE74ShH%2BmUIkRLSbCs%2BmMKDQsO1HornPgEBYiArIMDbBfIkZaUtwKZgj9mKxJJErWA2kknANBIvzBooHk%2FeN79%2BLFGB3xAIGko59EIxj65HJZq%2BNAAJOiGwfmmRU6AvYoDYnCRQl5TA0G6WSFhIswWjaWQ9ICHPOhBjx9Isn%2Fc2iS4bBOKfpyIHmhKkUOiF17J3FazmzWeHrGHQvQ1LZ9FFbH3NGC8S9CjBBisZ%2B%2FQ6g%2FJFDIM0dpLP4MJsH5qFCnLsoZAHkQg4xmrj%2FoKwT3WyEZmDeScQVmvcbmEtL%2F4ME3n6m0R%2FLGF%2BEjojsRNGj%2FQAs3dPmUfYXDAT1%2F%2B0IPuFGgY%2BZXLlK%2BXjhCQU5y4qPOdnds7NehjCg4oUwiiBT0UNyaS%2FDiEDX6QgiBrIKD%2Be%2FRAT1MEfIijCD%2F4AQH4gI8iOGBDGvjXFlKws7%2B42AZ9TN9tpxClEa261WI%2BRE9%2BSzpIOGBUasBYV%2FXITjXIAQ5zPEQIKFQEG%2BCO2MY%2B22mUIAc58IFDSjD2IRxw2y3oKRQaMFiY%2FyLJqQ7wcz3QG0zALe7G%2FC0Fih1GA0KRDnSLA85Hs8GHWHmaEjhKA3dOgT4goQHs6Zvf7W2dPoqg2CXhQrQp8JiLeXzXxnCK3vYis5AjroEyyyVtCnqKPtK8ZnsJD15bsmPM8GH%2FYNH1Wx%2Bj9I76Rh5B4ajhH5Ypgjzk4SCHyJzmoYjzWK4tEHK1CR8wWXfM5JGZxoRXH%2Frgxz8ilVZ57AMSDmn603W%2BE1z0o1X9iFoKIMQqyTgAF51aRw7lYoN04GPBVuk3Pu6xDpGone0%2FBvIh9gEPCl4Eo6xixUVg6XRl368fKOkjPiwd%2BDkRfksO6JNuICEeB2UoZvoI1ml%2BMPOZi3PrgxctRiCED83%2F5ebygEdQQC%2F6zQ8%2Bk%2FeD%2FE6TuCcFfW5PDf9LCuYU%2BqBM4R4zFztYPkXH8F2lCP%2BIoMj3ZJXhk3zZwR%2FIyVOum0uwXHQEUIIaxm7mUgI3M9FXQwySVQIl%2FoTyBWMA9EDAL%2F7vLG7sGgDu2G89hrgjZdBKiL8SWBMDNSiBSfW%2F%2F3WAIH8l8Ks1W5AG6%2FdKe%2BReXcY6DnCA2KGAwmJ%2FTPIDalB%2BANADagBi35ECSiAbXUZcoRYG27YgRcAai%2BOAfFGBW5ICYRAGrPMBYWBto9OC1zUWKKiCAzGDrBMCMLglFKh%2Fk6EGRVcEPrglHcg6L9CCxIWCW%2BB7V6EB3qcs0jd22Ud97tWE2HF9AxGF1ZeFWriFXNiFXviFYBiGYjiGZFiGZniGaJiGariGbNiGbviGcBiHcjiHdIhFXQSGKSB5XKgG7rdbwvOFd%2FiFU9Bye9iHEPWHXvgC%2F%2FTWhfEHhnz4hY8GhoMGhjYghVsYCEoIUZiohRpgWl1oA1jmhUABhqwQg1nYiY6YcV04il%2FICh%2BYhUXAZHu4iFzIil0YAp7IhT8gi1uoBrSohQySiVhUigsyBZERPqj4hVQBhrbYhdgGiLnYi6rIhYdQdFwYCq9YfT%2BANV2YgmBYjV8IMmC4jWDojV4YjK1oikiROtagD6tnEMnohcv4hc14jepoZp%2BWit9ojVuIjV9Ijl9ojl4Ijl4ojv%2FIjVwokFyIjl5IjHkiDzk3MpbYGtGohfMoivyohc%2Fohfn4hS20j2Doj14IkF4YBmogAAIwkBlZfQY5kgi5hQq5hQzZhf8O%2BRfhBROYcxAdmYi8qIWKRor3uFs72Y3TuIWHcEVeuJFdSJJE%2BY1IyYXZBoYqVY5FqYWsgEs0GZQeoQQ1llX1UwJFEJZhOQXDIANmeZZomZZquZZsuZZb8AltGZdyOZcywEN0eZd4KQOPwAN52ZdtyQOt4JeCqZaBwAeDeZhmSQhbgJiHeQpFwJiCGQaXAJmCaQZmQJl%2BaUGYmZdKcAqbmZeS%2BZl4SRGieZetwJelKZewoJUdwZWSUW5FcAiyOZvdoA62eZu4mZu6uZu8uZvecAvu0JvCOZzD6Q7A4A3EmZzKiZtMYAzBuZzQ2ZvlwAvRWZ276Q7I4AzPaZ3cGQ%2F%2FYAAK8cCd4qkOvFAO48md2UAM23meyxkPgAAI4cme0Gmc2SCf0Tmd9gmd8UAKbRCf%2BUmc7uAM2vmfykmdBJqczSCMEXGT3VKVABAM6oAOEjqhFFqhFnqhGGqh3mALGdqhHvqh6AAM2QCiJEqiERoFxhChJbqiGVoOt8CiMIqhxeAMMVqjE%2BqdmuAONmqjt1AOO1qj2QAMPxqj7gmfQwqjInqkLOqiSrqi7qAJYBAPTVqixVAMU1qiPXqlH6oOCTouELlpk0YQCdAMKqqlHbqhZvqhSZqmHYqiZcqmFcqkcCqjNDqnFuoOYJCjdmqhWbqnFBqkfkqhRSqlgSqha1qo%2F3JaqE8KBjpaqOggoI4qoX0aqFyqoBExMu34jgUxpm%2Fqp2gaqYdaqG7qqIlaqDMaqXiqp446qYEKqI46qKA6oqT6oo66qI1aqJAaqay6p5W6IFsACbmGEJwaqZ%2FqqKEaqKOKqLTqqKdaq3l6q4G6q3vqqoUKq8Yqq8qKqlAKrX6aq6vqo4Xaq1k4rI5arIV6rH6arIFaqoHarIr6rLoKroVKrYFqreeKreu6rIFqq5HqrYUqrXMqrtVHroVqroGKrnuqrn7Krn7qrvsKr98aqfTqp%2FZ6sPi6sPrqp%2FzqqP4arfLqpwJrZgQbqAbrpwhrpwq7pwy7pw6rsRD7rx%2Frp%2F8Tu6cVa7IXq7IZu6cbi6t1GrHh2qXjSqbEyqGxGqnokLJ2urJ22rI6%2B7IeK7FC%2BqrvSaj3GqlKC6c7G6gd66cAC6chu1sj66lEe61Gi7RzerVwyrR2mqrcuqddC6cza6c1u6cnC6dom6ZZ2609C7OO%2BrUQFbZ7WrJ0e7MJm6KzarRqO6dsG69QG6lza6d1y6Z3a6Z5u6db67Yxa6d%2Bi0WAa6eCC7mEi7KGm62RmrhY67Rcm7l2Grdz%2BrhzGrlpOrlaWrl2erl2%2BrZpurmi07lz%2BrmvG7pzarZ2m7Msu7cuq6p866isC6euC6ewa6aye6W0O6e2O6e4a6a6myy8C6f%2Fvuu8wAunwiu5xLu0xtu0yPu0yhu11Tq1RXu4tbqt%2FVq%2BmNu3QDuwQluuY1u1kRq%2BsTu%2Bc2q6bLq4Pjuv6luv7Eu27quo8Mux8nu7quu19Suy91uw%2BWuxZTu6%2BYq4DXy655u6jSu1RorApKvAjBq%2FRnu9Wpq9W7K9bNq9bPq8Zsq%2F0Ou%2FabvBAYy685u%2BjnvA%2BjvC%2B7rAPHvCD8ymKvwdLJymLpymMKylMqyl0XulAIy3OOzAH7y%2BIdzDGfy%2BJczAQky%2FlnoaR2ymSWymS3ylTXylTzylUUy5U2y9Q8ymy8umzfvC39u%2F2rrFQcy44RoMCaCFYaylY6ylZTylZzyl%2F2ncpGs8u20MpyispXGcpnOsxHU8w3fctrVrw2zayFOqDnzsxxNMshVssxfcqUlLw2yayNK7yJn8xmn6yGYayWQ8yU5sypQLxFqLyWmqyU3KyV%2FcGH98pYF8pYPcpIXcpIespKg8pQKcvAS8w1dswQn8w3h8y138s738F788pcE8pcOspMWspMd8pMncpMuMvs0MwlQLzT6ssbast9VMqREMtp8stkbbzUf6zUcazkM6zkpazh6sw%2Bjcvuuss%2B1subhsprqspEV8HdncpNvcpPY8pPg8pPr8o%2Fx8pP6cw%2BdsxeksytHMztPsznoMz9csFw2tpA%2BtpBH9oxP9oxW9o%2F8XPaQZTcUAzdECncUkbMnUe9BamtBHutDCcdJHmtJHutI72tI7%2BtI2GtM%2FOtNuXMUG%2FMwePdBrW9CX%2FM4gG89%2FO8%2BBG8qDO8of3bA8rcyqnMusbKaurKWwLMiyjMa0PLtWvdNYzatazblc7bleDbpgTdXki6pljdBn7cgFTLE8rM44Lc06DafVy8iBvcnBUNJjIdRDStRDatQ2itQ2qtQ1ytQ76tSMDdWELdVfHdZVHdIGPdeaW9e7e9e9m9e%2Fu9eH3a5jTc5%2F3dONPaVpfaVrLcxtbchvLb1xrdiz3aQ%2BPaRAbRuS%2FaOU%2FaOWXaOYXaOaHaOcbaOevcqgTbOFPdX%2FsU3Qpn3VI53VkH0Vyb2jy72jzR2jzx2j0Q2j012j1W3W1y232T3afI21wc2mi23d1uzJpIzX9dzbhIzBGKvBft3BGt2qg43doq3XpK24952m%2BQ3f%2Bx20%2Fd3a%2Fw3bA166w43RtX2lxT2kuT2lu83NAA7Ov63MD26mEQ7YXszfQ3vh%2ByvgOEvgzmrgNL3RUd3R9L3dpZ3Y%2BL3hR%2FrhO8rJfUzhL37TyCrjpUzj72rjT13TOY7kM67FPg7hQD6kQm6jxw3GrM29ru29GD7lzHrlnd3hU5rlNhriTTriEF3i%2BXzi5JziWrritt3iRo6%2FMO6o6Q2j682i7R2j783iUB7a%2FzrO4PUdwHJ%2BpXTu4bet0J0MZAQQ6QTBKA8x3jZa3jZ63jC650sK54hM5tRt5sTd6Eqq5krK5irt5hTt6Rid6FO66GdO6sat2g8BY%2F4jDlYBMgJigWLa5S385XQc5kuu4QVe5YKO44Qu5cOe0yb83XR9zR%2FiSK4AT%2FjABtaQDqZo6TWK6TWq6SzK6Sva5yv65zAa6HU%2B6Ape6K%2Fd4Pbd3XLt7Kl9zXJAD40mEEAkWQdBAL6OxMAuycJ%2BtqwuzqDu3qKupGgOpAku3wu%2B7oeOt67epLA%2B6nbeEmUiDuJwTWnjHeE1GGHjNAQCoeUQ8iI%2F8iRf8iZ%2F8iSPDtnAoSjf8v8u7%2FLoYAsj%2BvI0X%2FMi35zqYPM67%2FI9uvM%2BX%2FLoUKXo8PNEH%2FLqkKc5X%2FREfwveoPQ%2Fr%2FIs7%2FQ7zw7vyQ5Sv%2FMxP%2FNXb%2FO%2FufU6rw5QmvRe%2F%2FJBb6VjX%2FM9f%2FYuv%2BW6IU9hAAnE4l%2FOMweiwgp2f%2Fe2wAu3sPd83%2Fd%2B%2F%2FeAH%2Fh%2FHwuxIPiGf%2FiIfwuEn%2FiMz%2Fh6bwSZoPeNP%2FmCzwuFT%2FmYD%2FiLn%2Fmcv%2Fe8kAWSIPmdn%2FmbP%2FqYX%2FqmP%2Fm8QAd0IPqp3%2Fio%2F%2FqJH%2Fuyf%2Fi8IAlZ4Pq1f%2Fi0v%2FuCHwu67%2FuAzwuVUOSQU0oZUwP6oPH1E%2BnOLzEQKrH9HstGi%2FPsnrb%2BVtq3SK%2Br3hDfc0r1gMAOyt67Af%2BjYA8GFY79kQoOBw%2BjvLwTDRBtGeSKikdXB6HtMcrtMertKwruJQoQ5W6hI1jQ4EGECRUmLOZs4UOIEd2B0eQu4kWMBW%2BVy9gRYjZgHkUmjAcIULyRKQsCy6ZSpUCXKd1pAmMxpkhnDm%2BK3Lizo7pmDgAMJVrUKAAH4tL9UMNPDQBc64qEkhfiKIAEzdT57OjNFteOLMFmjGJs61iIMNFGbLgW4sSKbh%2F2lKsQZF2FJU%2FiTSiW70G1fwvOrCnYYE7DBukaBir06mMARcThuwepAYAa1vTJC%2FM469nEXhOvbDkaXVnQggMnbjv%2BGq7NxIsN3x2tF%2BVov4lXCyYM2zBi07L%2FNoYM2YGNFEWPW%2FWs1bRo07kTox69W3DrxK%2BDcxxNO7Ht6KV1D3RN07dg4KOF8yVe3P17op%2Bffw1v%2BrTZ6uRHYzesXT33xLwzDDzcxDPMOr56My292AAUrD34ImwuNcGgK9A%2B6sazjz%2FeKDrvr%2FX4ElAwAhOTTjX9%2BjNvQZ3%2BGw1CCWOMz7nRLDTRQMMyPDBFwzj8y78GTRvxrxINO%2FEvBPFScDQGDQuxLhhljFG%2BGum70DQdUdywxf483E7IkGoz6bYbTUuyriUTa1KwJ%2BWKUsoIqQzNyjKxxE9D03xM0EsXuwvzuzH%2F68vPtDR%2F49JJB4cLCk4p5TTMRiNxFCxLl9RxJx5M4%2FmQoDPr0vOgS%2BM5K1QKMwISUTBNKxIjUlM6kq9O3SoUvUPZTJS9RRmdksY57XuVL0plEiaPKq64goxN1Ck1Vrc%2BLUgdO6qoohR3uumiWGFKvejUtTKFrc2EtF2oVYOGfNatVSPqpgxsxYXo17qYRWvWkdTJVFN3CVozIXJvEq7fsd7UtThHb1L2YIQRRscbYtzJN9yY4D1I4ZuCFckdQ0RAYGOOg1jlPHnRcpYgdWYwwIA%2F4nlGAgMQkOVhhbgdqxs3yCBjkbPANcjSbjJSxxCbJ0nNXHTcCSecbgP1uZsN%2Flr2BOa%2BJIWVxx9XVMnSWuKwmYw%2BglF2oX13ppmMM7CBOiLZfra5lLM9EnjgCblyp48cgrD77rtzICOcJGgIIluMlK0lYqkRcmeTHHK4YieLO3LnD44RkCDyE55JLeSxRkZHnRw2JkTlDRBQoJa2DZJZ7k02NkCEbrbSmWSagzCH1SNOLoNMdIZU1pAZAB8r3YfU6UZjBNgeyS%2Bo81X%2BLOu%2BXqh0fq2uFx03Jo%2Fcgi7CETfsZ6WxoOVUoFco7RxOTnmtt%2BE%2BqmCX4rmi5cgjNyCHcDzY2JNNEVInmCNmIHxbQ5xsBuJDSOMClwrriaBrmzgCx64AG3WwgxfuoGBq%2Fi7lMAo6zF6islQGSYYpCGIKNBS8hk4ueMFndQ4Bn3tG6EZHwNP5xB1ViNwiLPI6ddSiBQZogamcsDE34G5EwmugBHwHFuA9b3gbM97OPPisJwLDGyhpnahMV0EK9sxhOxNVFVNjL%2BF1g4KBuVQ4uhGOCnJReJYiYNGkNxIacsx6CDBAFfLHPZJhw34ICN9OyGc%2B3HElfeorCvtUEo8uiE4BCuCYAhjAyCCEo2kIwF9E1LGJ7%2FnPJRIbjCE2NsCK3UkmUNiYCGoxDzYGoWUt6FnRuoEIMTzBDZvQHkHCsYg%2FEEIYf4DCH7CxiT%2F48hmEgEIZNrG5ZwRzESTzRDCb%2FohLPdDCYZuwwxN6SYnNbU6FLHQh6UYSQ4O1MHJBcB2ALAVC0MxjEp%2Bk4BU1tUWCuOOHCAgiydxBjmWksWjC2JgFnmFFJCotcEssngUXkYQncAFpm%2FPEE56QPXQQgxZu0IEJgtAFWdhEHWdwaCkmkYQT5MANrSPZM8gQhBMEIQ7P0KgwTnqCExwhDtjgRTw3UYUZnKAFUEBELZFJ0Zi6wXLffGNH4pEHjt1gEbX4wwk4RgkIXvAa1wAVFjGlx42lQlP4mhgFuQpFDaqDF%2B2A58%2B60IWnQRGdlcoVIQnGq3DWQq6TsF4f5FoLYZgDEXowhOU26DAOAnQei%2Fgkpuxp%2F5OvHrZolloGOaK6FX1i7JNtNIgBLSlOes5jMKWYpTBItokWxG8GtXCYMBjQshmobhNJaBkZRAA%2FBNhRGAowgBGVpUoDkDOHdGQALcyRhPgh4Aja45znQCc6b16MT2iJRx82xkjJka4nypJFH6T1B09sTh2pSCQCTGCItG5lE8SapU%2FlCUSUqAMbk%2FBCE8qwiFw4LBh5YIDk%2BrAIswV0L0sjXhPj6QmOUQsd8ajCyZJAQT3sUY5u2ErJWqYC2nJMB0hzxyqcGjkTpMJhviAebFlQid0tgI6whUKDa6GC%2BKkguY4r6kAvPIRwiGoetbDAxrpgE3c8YxFkqEI0tyi8Rf4YYhPPsAOypLHHVKTCDV1YBElJFo5JxKELhhCGRmthCEPU4pZN%2BMIkfOqJRSzCd%2B4QBiKuZYhg5O8ig3QrVuBqMGXFIxjWmwQqlRWOOHihDFUWxlkJgY0%2BJEFvGf3ZEDbmgS64QXvhIAROZ8CFPEjjLOoIhyGgMIM9K6IJXRDa5roR6BlUgRC1lCwCQBkTy0JEHbmw3iZ808EGI5BjClYBn2tMOXTMs5S35qM7grAxQ6hsjx6QRjwIsbEdcKPAhw7dxmxY3BUe94XfXC5aUouAMlz7dhuhdBUmd7KNQSHGUICtAY7gsFoYOnIt0HDR5hnEHIaWjoc2xDz6ANusUv%2BWJAJdM0H9SzIdbOx2wrvwJOIhawRsIAgKDja0E34EeSPAhuFQoQeOAINPxjiOOciDa%2BmIhHhgQ2PY6wMp6TgJo11bBUe48Ax8aqoWb4uwTISNO%2FLQ2Qb%2FgXgbk0AXtFsLOopA3h4QhsYUcO2NtUDAOUR6wvuwFQKfLAgB59hwlVU%2BlN0mDwpGgAXi0EY2u9WQBquF9WwIu0l64uB0bAHWN7aBUsyDtRwzwAbMqELYtsCv3fi16jzwWgMMXBjyBncOLFfqU7sk1Q85XD%2BPqL%2B%2BV0AP3VhEjesYD2HcWgKE6EMe5M7zRYRDFnu0gz0gF1t7pI5jm%2Fg8AvRwDShYQAL%2BhjhaA2Mrqm1Ke8WOq7bcAIwABtSiDBs7QTd4UY7HtUwCiWOkAbpgD3LT%2FQjxkEbEeW1KS707Ht1AseQqYD27%2FwHffNQ3QpKoEOH1l0LGTjoa14mAFqARuKau8jPmH39oe0AW83iGCTZW%2BpkzJXtABxrYGJTru6%2Bzh1Q4gjNoBHdIBeILH3twgypwg1qIh5lTgWewh2e4NlfzCHq5iOYiPif7oC1yh2PjOV6rAsGZIzq6gm5QMAVoNvgzm26QNwagwTy4lDjqpzkiBIehupR5HI6xAF5DuXppqza7irGLiRwyO40iKLWDQI5pAaQLgnmoAhHjuR56H8mZgRloPjv%2FEJW5g7%2BmKwP%2BG7ocCJ06uhRPMrXyuw%2FKKjULeLydKbuNQQRiUId5SEEPwIZnuDU0xKD5mz57mScumIfMQ4ATQIfu2pg4QAeN2QBacIhuWAV0eIZN6LsqwD3jEqdpU664YK4r2JggcAdZMDtiQD6TKz17IAQLwLQcGj5GnAStKkXJibRJ2KMhOEQgUkARkAAVoAVbGD3JWYVkmpzNm4QS3InzCxd%2FoxB1EIZmKwV7iKMu4L9mWwSUcAdfsB5qUSEo0Cx3sL08uEZTrIVSkAVcPAN7sD1GTII%2F8IV22MNFTLoq6Ct7sJc4cgJZKIVaiCMyCCSJiDmJoEVyeh5q%2FKRU%2F3gGXEQAg8NDBFCBReACT4jBpEuFbiAE6zlHN9gYFdDIPmCk4iMwjiGDZ6gEFgg3URHC7SOeKhAGYWAtA9AkkQg7QmrCSpHIs%2FM04plCjjmDzemuHBAe54I%2FmVQHN5iBDViEebCH7kqCGbMeO7CUPtjCMrAHpGJEYZgHY5SAU3rDxFOJxXseifxAg0Ajh6HCDaCpzVnE0QlEYMOx%2BauneOACG%2FPEBUiFgPOAGjsC1TuCEnrALsgBXrs9aOMm5IKh3tsJ9SIeQrCHeOi7IDg%2BdzC5DTiCPEiFKrMIdWKnaiGeOEClz4yuedA%2BdMCGYPAFb6iERSCeRbAHYZgcfyLIm%2F94Rv2JRsMxuTJAB6eSAK2iwjo8C%2B7bmJRRoTEsGiHYmHPsu%2BBCgCCIB0yKHwnYARBTBzIIrg0gg24wyec0ACiwTcYzyLeYv1Mcl9MTAWHQFG7YgY1xgnjAQwlgPYfBKgSoN3t5go05N6qrJ3TwQHScyM0hhjNgSXUQQnv4PdahoGCogjw4piR0jCVkwjfziSd0tij8ybVLOEmLhzcUAWwYrMmCrBzrhlTog2tLAnughFIiLnSQt6ycvyt4hlqwv43pA3sQyzgsS%2FSbzRslE3eYhBbogk5Qh1U4NLdUB1Cs0VszBLpErwHDxS7QlI%2BMLfupAlI6gVacKjv4Nvjrvk7%2FTEzdY8xRBItSk4A8MISD4rlKQL6Z4xgGaAFFs5SZ6yElrbFpIzgDtAftU5ZJqIIWYBmOMbhv7Do7dEZ%2BsyTdBJX3m4H3K8oKY6Th9LTu%2BxwVclLlZE576DsPUAGYaoEWUIESc4da4IKd%2ByTtmoQhoEE6coMA3QBPPQEVUAETKAM1ixnyfIh4sAOQbMY4s5c42JgkuI1r0IPJwkN%2FajD7XAXIOsoJuzARmNUW2MYABSVi8AIDRdCtVIFaspd2itAJjRu0uFCJy9D72dA%2FVJZVUMb1nDmbRIdFQKl5E1Z7CFZGJLV3e4e%2BW6RFUh0uyNHJCiV9O9CNoQExOpjaWR3R%2F%2BO5Vagpd%2FAEdpVLBECEJ6UnlHCfvDTSydkARsIynpMcWbgGWqixBbBAdaDFMM29JSXTW00Jgn3OjWkCdigaQug%2B6RuwOkWmbmowdOg%2BSuBT9OqGBjqZ5bs1QqXNQ73NRFU1glqFecigNAqH0JIAjEOAPnAYgiIEVIoHT9hCDbtUi3CH5USAc8TFJKA0dEiFGkWaZxCGTsAGT4gDFSqeTFTHZ5iEMpC3GcBYBCixo5GrM7qYXF2IeDg92xqMMgiCPlhPez0wgijWY0VaZUUyyHrDZ4VZbAtQJ7CIa81W47SHAp3Ibn0nl1XCcJ2ROAwXnjRXSkJXs1k1pMVAVN0cWv9EAIujOhWt0hOopXjQT3pSB3mTgA0YXg%2Fwy6zUUYF1CRTsGGEIB2yo3U4kKCSwhWrpuwFaRLAclbq8WCm9DaQLvlqor4JFB8i13W6QTNtL2U%2FcWWorUwtFOJg9AbO5FGHgrByYI9bL2TvdGEpIr4VEgE0AWnrK0ZYRAT0AsWs7WkNN3YPAzYkhqAedBAmW4FIYMHt9O8Bxh%2Fk7gVLohlpQIRjQHrDNVLK1h5mzALXrhhmwABXoqxOYnEmwB3ugsY1hKtkzgQ20h6OcAXeYuQ3Yv2dQAQtogT9oWcMZXPSTSHgrmmewnzqq1xFFB24Qg43JAVKV3M2xzw%2BMhyqVne7%2Fi4NU8ARP2IRS4EzvHMiIwta%2BbcnPfT%2FWUZZnKANC6ISFchvTPV03Y%2BCJWV3Y0VAqTNcLrUPZhcMcqzEJ%2BIPz5VUEUNH32wCWqhb%2Fy9z5K4NweAZsqIVgeAYxQl5UEyWXNbmuawEFE4HDu2AWkFcDxDxDTi4NhlK%2BnVIL5hj%2FCYcLQ4A4iIdrqIQH2M9F8F3EVFn2FUUjBsHu8oAyOOZj7sEmg4IcEAFPyIcZIx5EMOGk%2B5priyRRwUUQjYd3C1AyaIdlCIY9ikhlVAZ1mB39Ek%2F0I6jnHCByFS6NQjgJ8ADrsQBXgzZMFVvmRIlrk4AgCF7Smj8LCAKQQlUaZkS7%2F2m2MQyHa1O47tuA3dsWJEY%2FeIyDnhEGdZO40ty8S1mFDBC4qYQ%2Fc5hcYeVDbIBRe5i%2FcbQHvhuCPcvCjUHjzl3jl%2F2DeVhXYJuHeRC%2FhGvGwLnj09XJq%2BFjnzzXP35dZF3PN2SlZygF2gyGfbS9Yf3fI3gG%2FuGYrKzSGTjfZ2gBEQiCVJgHTlY8T54eUI4cERCwzcFL1eG5r5vGCGPlhL2dASswA7iC9JIF1cHrGYIf0sqJ2lGduqMj%2F3GwrFuZlnmZ9h1m%2FrIxycwU4DXF%2F3ywNC0Ddh1kf04CdEhBU0sCpLMDCurm7jJgPYg4g7tHHdCBiI4JBxYbVpUfUFIHeP%2FsyaJBBK5DABEwuM0xGQMAwqLBrTHcLsIr4GfDhr4DN0YEsR7eI%2BROAuIKBsLrJyQEwYkOl2CIZNxmyqq7MxVSgCA4gj0i5StGgKLMIwUTqe5jgLB%2BUyjoA%2FdMuGeAaQSQaTUOz5pGib6zgCM4AuuxI3DF40KqUMck6vQzaiRtQUOVTo4xgRkIhluT07k9sHgoA%2FjZABdEw2BoNlGVN0f20IDt5DjcikUYgllVAUyrsmdRB0pIAhSY1SeoJHWQBiytgqHanJKDgrNDQSiAAkwVni7Y8WQ5nB3vTXRoiG6oAmklg1r4cRpXyh3Hn27gAiiISZY10wDaGLQkiHg4A7%2F%2FroUOm9cyUJZ7rDsxql3YqoJ4okkMp0Hla1VRKUCO6SOuaO20XARCwDI8xzJCmASCmAdafGODkKgbhwI3QHGCmARCIASv2ZxNSHRvMsodLyZDFx5DwNId%2F7OaYuI8iPQqWKZJS6ZIt0DGBpXq5pdaqOXIMbwGG7zgsgCU262anDTvkRwPwLeqXGu64zmUiwdycz6UIIYuOBn7xrqUmcaIk%2BUat2MJBfA8Rh%2Bgo6OeFJ60WzsDsABJg3UEqDKRU50N6IbQPRkeCrrWCQeTOxkd6LvbcQdE6ADB7jobwpiTaYEdLWuVcJijobBScRhbOBp4iidNmRgRepaAH4yB%2FyuC%2F2iIOwsHc8Cgfy%2Bagb%2BgNgKnbwq0JPC5iRGGJxCCJHBKYaiCExABkD%2BCTtucRfBqEbC6S3oCEwD5IMCZBsuDJNh4CvKEGQD5GciDj0oCBtuuZhaB3tHjAVtaiYBaorcI4bm2GzsIKQqVxCoafXL6fj%2BntVIrbwkMqQehrvKWiC91fnmGM%2FDqERABjitB4bGDmhcBFJAC0kImJ0iCMIedKqj4VUgCmzeESUOHPOj5k%2F9AdfiDmPdtXjCEmH86pYz5ZNknLlABkB%2FSZFd2Zkdd9CGyOIiDFTMHPBADO8iWZ5j8PkAa9bKDOMiD1tmuJ7CbLrCcPLCbI%2FiDZJr8Z0AHMf8arzgwBHSII98m1cQ1%2FbXPocmn%2FeQVJOdRiHLgheC%2FDp0ofjRpTCd8oq7iBXZosGrpBum3FNMxo1aKpzBqnVfTp63oBmagXlgjGdg%2FI6AP%2Bv2SoZOyWbUmDTOhmgTh%2BnAxGunXImm0COkvhmvwjaePpwoKIzQCCHQCBbpD1%2B2guoICE7pTJ%2FAWQ4foIg5MGO5guIYDN3LsWLGZAwAiR5IsafIkSgAJmkn06PKlx3gyWwokRyyeQ3UyFQqUGa9iw4QOg7pr6G7msxY5jniyZ69bCwQINikUqk5oxZ0wt26MYowm17Bcy90Sa1ZsMWdn1750B0YTT7ZyH5bbePWqx7v%2BHfWGVZcN2Eu8c2HGAwTo5%2BCO7oIYkIqgClh0wLIlnku2slx3msDETcw3MDpnatcKzlva5a26fT%2FPVQcyJezYJ1dGxszVmy3bLtV189B4gxs7M6RuEFZbt0uvx5F3vMwc7ejnW93Clc41tfWtf7MTNoxYtzs3M2bkyBMu8mTuL52rV7y5c3uBouN7xE7%2FY0jZ%2BmPTvr8Rt3ru9OGYAY1JhQd88Snnn0DsMZgWgwS9lWB79jG4XYSFHfZcSxp1lF6EDt6nGWcRhhYdgxbe51p%2B%2B7loUn8RAqieOps8cQKOJxyhhzcmorMggyLeB2GE1FGonor3Ycight%2F5B2KQZRX%2B%2BZ6J85mYZHwsvrglSTEyOGOA7hx0kDvEUGYikP4JSR%2BRDBp5pWoXApahdyZCqaaUblIZoZURYtmellxy6aV%2FYAKq153%2BpXnfmvG16d%2Bbfsbp35L%2BNWnnmVGaSOKR3PWZ4qT0BSroi4TeZ%2BiTmTK4KH2NtvfoiBPCaWKl910aYaKt5gnpngx%2B6t%2BfNL5GaqksmYjqfbnSx2p8rqoHK32RgkrrnEzWiauqjO46Yq%2F%2B%2FXpfsNyNSqx%2BptKHLH3KKvhViNsOiWKs1UlKrYm3Mqiues5mx2mV8IIbapbDkluusTLmhqmPzLanb3bQxictsADHVyt99qZqIsPS8cunv%2FT%2BhZvduCgVEUoIIhEQRih8aGAyyiqjZG586MaHr3oK5%2Bsumx23B%2FG%2F9NK5IbYY47xzt%2Fd967HEwraIkg3p4JOCSHXwg8s9rhAAAB9T48PK1TAW%2FOXBQaPJrqYmOryzrPNGSHF8Fiebra6bFk3f0fF9bF3IJalBDz3yQO3AOqwAoAY%2FPwAuuByFz%2FZ1oWHfC%2FeyZOPp49kBpj3t2tVaeu3jQstdIsc%2B3i1d3iSFIschTwPwwj6BAABEP2GksA8fABTBTxgnBdBMp9l5o%2FmTPY7du3QZS1e35aAQL93o0rHdntvpQr7w0AGCArqvOle4qcAnhcSH6j%2FwIwcANoxvPvn%2B4pP%2Fwhbttx8GLaLJPz%2F99dt%2F%2F%2F3FxII%2F%2F%2F3770ws0vK%2FARKQCb8gIAL9t78EMtB%2BtrBFAyMov2xkQRLZkKAEA4jBCOpvgw3MBh3ocEEPJlCDJERgB09IwGxIIgsjVOH%2FHghDAi5whv6jRQJkAz6oqQ8APeAHHNAHgB7%2BQA5GNCIfioGMYjCxiU58IhSjKEUoAiOAU7wiFrMYC2BksYtedKIRMvHFMWqRjGaU4i1uccY1NtEZFVwGG9loxTie0RZzpOMYnRFCZ%2BDRjLGwRR%2F9GMgxLqOFfBykF9OIyC%2FecZFTRAYOdai6F%2BjDdUXoxxZSUEnbYRIlvDsW8JIlvAj%2BeWV5z6meepDHHbcob1aZqxfngue5Il3PlMxRJXdQua%2FuoWSHAHCAOIbhgEDw4wUECOYw9%2FGCxS2HOzJrD824YzPuGO85lVvl5SLmM2sBrXPt%2BpwtkYPL7DSPOaUrSSD6ATUAhAEf69gHJEQSBn28M57MPJbjLja2Zlqnmsy55r6y2bNX%2FsxJb5ulnrDnLe0hKWni4uVJXjCFFv2gDlPo2hDncNGXMe5U%2BTzoPr9pNoYGVF6YkxMsu6nPsiU0nLoZp3XKiZxzDsxr%2FLTOM9UTzexMMzv%2BRA5ArcMzpG1zcyoFKUt5pVCjkZScDgUZRGt6T4P5aKfW6Wk%2Fddmwpmr%2FTKBEJSg3DSo9hCrVpbaBKfOeireoSrUkMGtPTrljVelgtXhatU5Qu2pSbYLVqGKd2fRuBs5%2BiU6tpGNrW0fyVvXENTtzfU5dn%2FNT3eT1OUO1m2GdF8q2xRKpk5vSUunG1bRGiKaJVUlHz%2FXRsYY0qf6pLHMuW6HMPud56okeYMnKrdDGB62npO1MEXvaxTpztblt7WcjBFvkyLahRbVVZ1nr2mjNrbej%2FW1phZtY4vrOuNAMbM0kpy3KXZe5XsXscysW3eNO92HVbY9vmSNT3Zh2u6mNmXd1Cl5pijduI93UeWebXs4eVbrJLSthXemf%2BraVuzjNr1z3y9P%2BNuuu%2FtJZLngC7Ny%2BQrfA7D3wbs2KmfgiZ762YbBUHSydxlrnscyJLHMmaxsM26a5uQQucmzLHdx%2BV7fU5S18y1tiHJ9Yuw2%2BL1wh7FgJX5XC1CMvgPc6UJQWFGEibWmC1bZgI6cYyYxVcouZTFcnC%2Fa%2FRdLwjQcMvfX2%2BMoIDp2CV8Tlmqr4OSyWjouRA2PkyBgzNMaMjZ2q5tuyWb8%2Bdi%2BQUylk3ZgYMyims5eLW1UxQ5bM1LSwNRcNaDQLmsPq9XCb20u0RHtK05hpdGUePbA6M%2BfOz8mzbvasmz5X5s%2BVCXRMiWwbHWeHx4Z2c4izfFI5L%2B20bo10dyedMEv7FNP%2F%2FjR1YnBNWk8T%2BK%2BhBvGPRVwZEjNa16me86qR%2FWBlI3e8ZnYTp3M96B0XOsKHHrW2E8Nt26DaM%2BAmF6uR42rmwNo2srYNrRNj62ine9pUDquVRR2g9yq6sNkttrEVK%2B4VgxnPlH4xs7MK5TNL%2BasH92vCsY3oeA9m3qf2tr0hHnHU3pTi5CZlxu26cXR3HL3UXjOof63wVTK81A5nkKrxPXE7V%2FzVF9dzzCXrbKBCezDSxu7NCZ1zdwM728Lm65ZVHvF862bfyOk3Zv6NmYAPZuBOLzjUP95ha%2Btc5PC%2B%2BpSJvXKb4vPlq0p6jJdO2abP5enyRXlieG0dX1N95%2Fvq%2Fnl2TF6Zeg8m6MTium28rhuwV0bslSH7XMzed7T%2Ffd29bveS371wUiee73NhfGvu%2Ffiht7ro%2FD56rPHOZ73P2PRs8fuQPT940IdZ9DwnvXUUnxjUy8XxpII8ZiRvG8onxvKJwbxcNJ8Zzuc%2B6uyeeuirPnK4e1zuc%2B8S6%2FXt%2Bq%2FD3t%2BynzXt%2FWz7teC%2B27qXDuGzb3ihIj74618L8dlifEEhvzLKxwzzDYbzDQb0sYX03R71uZ%2F1fR729Z72vR2caZn3fZ9I9F9i%2FF9lBOBcDKBlpF%2Bt3Z9ZtB%2B9Ad5gCB788Z7F%2Bd7hAd%2FxgKBZ5B9pqN7xhV%2FXjd%2FklV%2FYnR%2FA%2F3mgwLlgWIjgyb3fc8SfA86fxtRfC%2F5c1lGgxLUc0dmdoujg2PFg2fkgVwDh4pHgXJjgEKKg0akg%2FbHgcwjfYMDgWezfoNBg5Nng8uFg5Unh5VFh5lnhdCTgCAohcxBhCj7g6JHcXJDh6Wmh%2Fskg%2F6lh8rEhALph88Hh88lh9NEhTGDh8AkiW3BhHnrh64HhEYrhLUEiTJihWaDhlljgYGBgYmigXHCgXBTgWhwg%2B9lhEC7g7jXgHhqhZSHhGHriS4CiWIhisThh60HhfagiW7DiWbjiWUhiGVLiWlgicujhF%2FLh7%2FmhXACiXPBiXxgZAYQARhGANzZA12yj1rFc3f%2BFXBQCI%2FrNHKTAYhbi4TNiIvlp4i1yojjpImowYygaGR%2F4jUjYgDWIgziswxQAQArgAj2IgxJwFDrWoDBGzkJOoTrGCzWyBTaGhTPqBjRmojSu4ESuhTVSJD72onA5AB%2FoAz2s0xbwQyhAQij8AACEgjyEwTCsw8rQHVWZ4zAyIgE6ogHao2Kw4yS6I0bC4w3KY2zhYicq4QSeBExaw0mKxCGsQwg0gEiEwD3E0xT0Q0KaBAGwxF18JViGpViOJVl6AzGQJVqmpVqqAzF4w1q%2BJVyqg3LEJV2OZTnwQl3mZViKhl72pU6AASjghF%2FmJS%2BUw2DmZTac5WHSZZMsJl3%2FmoljxuVdRiZcxsP1CCZlqiVfZuZaFiZnqqVwqcEL%2BBIA4AI%2BpMM68AEBmE8dDBE%2FqAEAEIAGzOZshkAtUANu5qZu7iZv9qZv9uYvZMJvDidxFic1ZMIvGKdyLic1MIEuMCd0%2FiYzCGd0Vudu%2FkJyWqd2doMVOIJ2fmcmMMN3Wucv2MJ4Vmc33MEddMN5RqctZGd7Lud0xid0OoIVsCd9Kid25udyhid%2FGmctjONI%2BFIDsAIrTAEkYJIQic8cAMAUGCiEhoIVMAGFVqiFXiiGZqiGaqgRbKiHfiiIMkGHhiiJligT%2BICJpuiHjqiKtqiFGgGLumiLRoEP%2BEAUyKiM%2F8Yojqqoju4oidKojfoojwppi%2FYokXookN7okZIojC5piRqpk2poAUjSOo2EBshDKCwoP7CB9wSDj2QDIlaGLSjiYDCBMZgIOPBkKxaDiajDWzzkqYEDrYRp4xkGnIopmcpFmrbpZtypwLHplchphOij6jjAFtjAL8EDyeDDIThoPwykTX7JZn2YqPyITloGL%2FjIR55FPABmR55FYQqlbWRkPIZIpoIW2%2FmciYQq0BlZIOgD1GgAPIhDERDTFpSmQOKCPJRMpDZOQ66Ln3ZgREYLUC6jqGIGqRblRobhp5rFpp5FRW4Fg8nBOqxTEVgDPsiDaq7OMLgTpPaqR%2F1qe%2F8Q41oYo1kgYwgWayAea2UkaxsaJXMhZT0qpaho49I4QArUpMnka0qQ4lyY4mCgIluQ61mYK3REWbOKRbRqx6RKXarKn9v1IffZ3BIyITnepNjAXLCuopoeo09yhDKuqyyeIC1Goy0eJT2%2B1MdyxMIGBiGm4cbKBcDOhcCuBcGahcGGBbqKRcheY0iKxUWOKlG%2B67JuYsKGxbO%2B4M9yhS%2B6iL%2FKLJ0GbJ6m4qVy7LA%2BjLr6LLsmhrsmIryCh7yqLL0GjIDaV8yyxczKRc2exc2KRc5yxc7%2BYNaC5NYORtdm4NSWa8fybNie1cpuRMvuxsuOoiH6X9TSbN7abNUW497%2FHizHHe11LC1XBC2yDq3XFu08Qu5WJK3CSi5MNO1%2BPC3aHq7aJi7bLq7eXi3a1JyAjWwXlqxGnmy8pqzfji2gDO4vlmPG3t3ZFmzj6uzfSgjrbpjafdrDFmHETuPEtm7FMqHorkXassXamkXbhsXbbkXcXuHc4p%2FnwgTltqvl4u3X1ljfjljw0sXDWezFgo24hlfv4uzvwu359izduu4lwm6pyi7Y0q752q7SqO%2FznkX0rsX0ikX1jkX8Yu%2F8bi%2B0du9LfC%2FXhu8pmq7bJnBblO%2B2nS86BG5e4K7TFu4Fkq70UrABo67vqq7lDG%2Ba2e874q%2By6i%2F58m8G%2B%2B9Dle2R%2F72vWQzwWRRwWBzwVlwvTGRvHapwpxVvteFkhQ1WBA5bvdpwl%2BGwWOiwWfAwV%2FgwTADxSwhxJDKw0tbtXNztBI8voGGwvGkwB%2B%2BFB4cuCJeiCBMwCfewCcMvCmMTEasbCw%2BlCxMtDI%2BxDJcxDYNMMOSQxQZwDrfxDr9xFcdxBc9xSWnuJzqwS0Cw3Uqw1IrxrZFxyZkxJO9FMDgxpEFxWEixWFDxVljxelhwFi9wHRscpTTs9R1vLSYvRy4v8S7l9xFyFBvyFCNyKSuy9aKyS2hxW3Bx53qxXIBxJWMuyjryS3BuWJwxR4AuwYDybejyKPMyTJiyS2BxMKsyM9%2BjMf%2BzBTIjriVHGyb%2FoSan7yCv8b9ac1iQcjb7MgIzslAR8zNvckdI8hdTMjkr8%2Bx%2Bs0c4c%2BSqs%2FOyM9S2L39R8xUDs0cIs0vQL%2FeG81qMc%2BmWs9OdczWmc6t6crgpNEyI8jtj80tos0dwc0N7c5wpiSszICybrCwzKy2vcPNSIC6HsjtzBTyPtDz%2FMEN3hEN7BEQ3sERzKj9XtD%2FvL0B3hEBvBTTbRRpPs%2B56k8Ye9d4hbErThz4fc1GPsEX3HUazxVI%2Fcml1MgAb9Ogi9IR59Db3NEf89E%2Buctq1ckq1dOy%2BtNHGdBHb8tzVdDWjdZOpdUmz9Ua4Ncja80DfsdDm8eX%2F7vEl93Em%2F%2FFacbTQAbZHgDROi3Ry7PRC07NeJTXL4jNHZLU4b7Ubd3VmfLVHavRM37JZQ%2B9Nb0VOZzZlc4RJ%2BzRKS6BKzzUSPxloefZGhPUugjZ%2BlPVsc4RlwzZmewRJN4dgDwRhb0RQdzFiV65iiy9V87FvDwRwg%2FNGE3dUrxTvXrf6WTVuY%2FVKzyJd569dZy5e2%2FFq73VrC%2FBrw0RsK7dmnzJnW5ZhM7VwD4RoTzRpH7Jp3x5qn8V210d%2FT0QgezfGSnV4M%2FYHkjcTm7du7665YdkSY51erxxfb8Vx03dyd8Ry03ZzC8RzD0R0F%2FN0g291h7F4m7NjozNkH5Zk%2F69ecf%2FHfL9EfYv4fa91fsfWfov1ikdwiyczhF90jGf0jHPIgq%2FzjQ%2FEh%2Bt4iHPEiG9Ebbf1bU%2F4xJw3yab3C6%2F3Mrc3KzcxbGgAH7jCJbgkADSAHLjCIfAqm7s5r4Kravn1mD05Olz5YGe5hud2lVm4f2F49iy5OSEWAZhmKIgDPSBq1rCCPOACVRKTo%2BMCRoEfnqNDlLvEjlN5jwf2j5sXXHfekE9ykffzkXt1koO1am%2B4SKRAarqmHBzO4BQO4ITCrKv5sV16pnvEpndFpzP3p2dYqFefEeOcl%2BsxmP%2BzmMc1maeEA1yNEmDS7NTOD8TOtNsO7pxEV2a3QPxOVf%2BN0t1xu55r9wK3UnlveYU7%2BIVDSi0tu6hDipGlAEBqgBChj5aSjxJcgr7vuy3wwgP9O8AHvMAPPMEP%2FC38UcEnvMIvfCzcwsI%2FPMQDfBgBQ8RXvMIjvMVnvMDHAsZrvMcTQwURg8ePvB2R%2FMhzvMlrPDGEkMinvMU3vMtnfMfH%2FMITQwu1PM0%2FPMrnPMTPPM8TPDBUgiCnRAo4pUuKT2v%2BEBvcOwBowAs8%2FdPjwDF4A9VXvdVfPdZnvdZnvTPcwtZ%2FPdiHvTfcgjOIvdmfvTc4J9qv%2FdZnQyywPdxjPRPFPd17wzmAgSTUPd3HQjboPdw7gy34Pdufwx7swTkI%2Ftr%2BQxDio73bLz7aSwIYHL7ji%2F3cT77Y873lh%2F0uDP1JhIA1rIOaa5IlSfsmRfutcmV85zCXx%2FI5vrgfn5m5a3l7%2FDdRl7pRn%2Fppp3pqE3pwjSMBsAI%2FBEIPFEEJANMwaMCrGlMwacAh6MMy0Tl%2B2Xml4fm4mzifx52fIxygJ3Fvuzuxszq264M%2B8MM%2FuM4UZOs%2BNCoAbAH6qz%2F0J5n0Yxz1lzg6nLjwcvsGJzg60L5ZUDRXAwQ6gQMJFjR4EGHBcrcSNnT40J0mMO4eVrQ40Jmzixsf3irHEaRBdc0cADB58mQIJUVYKklh0oYaJQROxpyJEmWCZupC9hzozZZPocD%2Bsgn1GcUYT6McFy4NWUyj043uwGiiKPWiR6wXswHbajEeIEDxvlYkWvZhU7QNI05c2zDj24Za5YokiRNvXr17TepUWrcgUMAHzw4uiPSvYbWGB0JlPJCq1ccC6T7uOhld2LGYCz9ezLjt1cdxMVc2PLIkX9WrT%2FrFLJhzUcyIJ39m7HhyZNGMTRu%2BPFkz2cmdGdseHBoz6cm9AaNm%2FZyv68mwh8ueTNszQ8y4H%2Bsu%2FXHy78fBY2M2Dhj5ZOWPmdd1Dh0%2BTumPqT8mzhh7ce2TuYOuutuw9uoSjzHyqjNvP9AkAnCw9XgDj7H34ptwPsbqY%2Bw%2Bw%2FJTLMHbouruv%2B%2F%2FMCPQMAPts04%2FzNIb7UP2IDztrgkp3Om1oMqbLanaOjSsP8O8W%2B5F37wCTizhTkRQxQWTa%2FHBySSUEboKDbvQsAwH23Cw8wDr8bgQgRxxyPGKvDG7JN1Sj8kAg2wuRiijpHE6Gw%2FEMbGN1HEHT3fqbEhLoe7UU6A%2F%2F%2BISJEEt%2BtFFMDEzca0%2F8eTJyrrOM7SsFRlzUE0n23STNSkHo3KwSOvC8tBuPNkEVWEATWtHo9TBBtVS0FHnGVRrUYpQO4NJdc%2BDEH1LnWCFFVAuEgdj9Ks7a0XVE2ncIQZFDkVaNhW0LG1UWJ4w7SnbiohtdFNOVfP0InfiOTeebh2CTZ1z%2F3stS1S5SHUoWEJUQABfBDaoQph3CeqzJ3c2wfeEcOKJwwAEkrgq13KPwDcPI9nyslF3nikF41KE4WVNwIwFDFms1AnHDRHyRUCELmzxBsmC3PkD3xz89elatLpJBeNu0Nk2JFlynpmyjuV6Utzo4ASpG0P%2BWPqPVGqpJZhgGxJMnVSWpgRop%2BKll0GL5m1InS5OPlmEVLr%2Bt1WhBCbYYDcMMGBhgRq2SJ0gIJY4oV%2BT7aYMk%2FPdAIljsv7q47pCdkqdboYYO18UBNfRIHcIwVeHwTmq%2Bat48sg3Dnd45iicFvCd5GyCvkWL6KL1IvehqhlXAAELqujGX8HicduAI%2F5Kx2rrvEnuHKSvEXLHjXxTtiOHfGcI5y9BlVpI2EBXnfVRke6UWqC1ESg4HkNMMKELhp3JE%2FtApb5%2BoGD1rPvuivT%2B6mHGEVDhGculKlyuw5dSJ4l8W3DjDKLDVxUS4zyCRI965Ttg9Q5SDl5MDx2So5z9yqWkoenAf%2Bb43EZCN7rdBU1TqVGd0SiYvlTID18GEALzEGI73OkOML07iDo2MQMDXAFvFRGeSISxAXwF4RnuEhsCDEC6WalDGJNYRC3qp46FYEMYwpiVLyZxqzthYxKbwMZu3BGOVSyxG1fRXsES5wtfPGMg1%2FhFLRaxiWeEQzTPEEb9qCjFCIYjFf6TCGL8IuY%2Bin3FHYvI1w7skAe74St8C1zfAc8HqOihL32P%2Bstl1KfAtehPbQNDpMHi0Y1DIsAXPOEJGycRjC0OBIpSpNUkSkE7Rj6DEpMQBhxdho1KLEKKYpwcAipXKQuuxR2pgF2%2BJnGNqCAwfeVTHwQ7iAAjRhKCHkEgJFEXrhHihXX0OiG%2BoOAGN3TBbwgwxFXudC48CcYdhghCENwgSkeaq3nxgCD6KOUyYpADgtR75%2FTscYWEdcEeJdxhQeJhB3xZIBjk7MYM2CmLO9ViBxbAlwQ68IVulIMYVbCABf5wBAkgQAJOeIYdTIAvEYwze4uYwUcl0AJCUGSMBv6zw0ahQBF1xAEEH41dCxahp260wAItiINELUCJeCyiBR%2Fd1wzaB5E%2FbuV2MUMXOoLwNhVABh3CQNUbRdONZ9QPG55Ao1fHuolaZA8dy%2BKqQLJBDHdI41SrCGMJOYJJmkEBXy1gYQRX0QIkxKF%2B7pjESicqgj5krwsb%2FYMTJDo%2FrGVPGFDwwEFzMAml8MQOJ4CdBXLQ0wjuspeA%2FCVa4sGFsT3BmOggq84IIo2vmuOOWhVrBAXSzGfeSRpbxd4twvHVMIZDFp6YazVFeM28ZBNs20SAJ%2BwRj3nUwocIqAJMTZWHOExCFt4gxqyekYpU5GJkODMbNgyRh2pRpBR2wP%2FlVbqBsVvVghB%2FsGIkn9GIOBhCFrMK1MVKUb9aLG2%2BteifwpxGwYESxB1OmOABaZcuJJ6AcQbogjqIMWAinuxeCZvoKu5kCPnZAU%2Ba5J7bFIYnDzNOAqVwRzfCSUQPdIMSKERAH50qGdIaFGWbyMw8StGEL9ghUJPIQXQ30AJDiDIJHRBBHCC8gU2UoQMeyANTJWCHeVBiyPgq8h944o1KPGGyIDVBGVx5yTGVRYBdwJs57hksTzR2bC%2BNRxUOqmEt90sdtSgp44CnjiugmHQS5CVdITLaZD3DZAqowmYrcQ139MECG9ABZAzRgQ3MgHaEACq%2BPFBZntgWpqtIgt%2F%2BNjAEs6GDF5TYQAe6UMOPioDMhKaXNY3bmqPZSbmbuEo8MIiAmgbyXvlagBAq0a7iKSwe2PChCv6wZ1%2Bn4pMbWESwagG7HMRBpxJIQv1mZQ47hBkBC5hBJ8iiOXyVwQnZLsPIIHyyuF3kwJCJXxnw9hd3IMwAPJ3EE35IYQUjct%2FG%2B0MedPqHeTwjulWYxBAlIIx4iLht%2BEoCWWzo60kYot1x6GS7ERCEIVzBHUxFmSEWsYN80dgh75NKIE82AzdsIhzEaAdMO6HTsZGOfWOrxZ8RMExnpsLmJ9M1M1CQL5sfAbZm3sxWEhdszxbkLO5IQsKOsIhF9Brkc84XFBb%2Bni9DkKXXHjgDIUQugVQ8PF9emAReEbC8eIBW1mwx9FYELQJhtFsMjvaFTnU9q0MC9MRjk4AnuihAnKeixRMdZ6o5rQA7G6AMHwxJ6mrdl1tfxHX4Yq5zZeG3KjwXzvkyQE2jimxsTJYBKB7bBp7hjlqkPuhETIKwoGDnfFmgE%2BbaHEgZZ9kW507yBIn3rLrRbjfkMH3CWIQdVtHcSZgUG8T4t%2B7soUkELKK58auCPfrww3nYwx4D%2FkP12Vb6uKVCD2JQhz2kji%2BNFx9fuhtZLXSK%2FXkII8won5iN18J2DDdhFWzqCBJmBgzBXgZITz5JB3RAd%2BiMYJIA0waQlwz%2BUIA%2BT5NaQGP6APYcSumQz0%2Foz4MMojBqwRDiABuaa%2FdkRus6rl3UQeQIwR5KYaIoYR7iIRxEDgrswQGhYBmaK3kQoBPsAe586UxQ5wcBigzwBQQ0gn8GKF1AUAIcquKGQGnajd5sq5OCzQPKwA60UBiIIcYOKg80La%2FCoSwor%2FKQKyEyDwGOoAu4oAqi6%2FrsAccwsBaGaMQkLtnCTASqaHHwZQdkwRB0ahKeS6c2wBBWwf9KYR4ECV%2BEwBMmod30ytwGSBYWIbrIwB0Q4Qd14A8sayOGz%2B%2FwBeRcZlXcYR58gRCqgLD05RikD1%2BOTx2C4aMsoF%2FiIQmlyx5Mq%2B3%2FuuAKuuAHn4D8tifiSiwznKES7AAKVGCY3q%2FdPOuoCMaV3OGQ9C9vnorpuiGxGMcCjEgW%2FqALngH8cvEJEhBflidxVvAEgggb0OG%2FukAY7GEeyiD%2B5uH5UKYPoiaL7KgDD81vXsqeZIPz8mAZh0kFHZAMyEIdeg0Gj01mBCIeYGZ%2BwqHXdKAJuKALBCgPhHDBRKsIkwUEEaAUYnAB8KUR8OQeReAZ5uEM%2Bg0dSiEPuiAc5NEBr9Dw7OHEBq8GhcFvygAM8wX77MERPQAb4g4h0LDW1PAolSvCnGBWwoGNcmEewkEi89D0wswNwE8ibZEsgq0QQ3IR5kFPRK4Mwu%2BH%2F%2B4pHlahsSbBHnavBSJoHthOzexhiAAq%2BIQvR8Di3x6SIMawibABCj4qYQ7xFf9NFkHQFttliLZviIjobRImd4bRKhcmmETnbXgPAZxR82DKEWfgsqrRA10GG0UGFYPhD5bxZPQqguJBGAyBFXWqpnLODhRyBXFIv1CRBKsgqepxFVJvolqg1fSrH9GMFI0kcdxAD5iB2h7mMhvrIBFJIX8QBhdTOARLy2oh0RxTwySMIweNCO8SJOKBHrdHGKRBGIJt9kZGgI4MBvAFGl3vD66gFW1ydHQw%2FnZtiITgJxHAA5pom0SgzESG1tLw8uiGKfNFAWCNhdzMDbKs%2FI5t4v9OD190rRJPgHZsyxBjh9vEE1%2BcIB5ecBmKghpjsS1%2FiCLiYYhUkOfULHjysiIK6qASKnt8IfUsABHoMmE2oNU2AXY2oDBj8Qlr8RYXcxfP0Q3KoAy8yQ0WAe2I0fzi4Rn2bAbyYBWOTTMRoO9Ybnum8Q%2BtcXhG0ynCARtKwRMMZsU2QQjyxaiewaMuzDdj85D%2BQDhWkN4CpRbiJ2F8U3e8QQxir%2BMCNHPOjOnYTq%2BUIh7u0QQCsKrmxw2sJmbaxQFZVB2k0x4c0lC7b3ueIdh2QAyQVEkLcQg9EjztBP5AagNONdtu5WA6tBOkkdpygAEuU6fo05nsge2ODyKP7QT%2FGA8BVFMdZBBlABVxBjQpC7Qi2NANlGgRUsFZRMmTHBNlHlQPJRQBUqFddi8IggVDEXNDjw0KXBBfFCFEM8MwS5QFI%2BjEPDMeVjQ0E0IU80ynciCIbDB%2Blgsd2o0t7SEMfRQWEeAwhVQxB8gexvMIwA8n%2F0CsYsr85kGTiBL8%2Fm02S7Xv1GEVdIoGk63dvNRXwNRVnkGAmHRWoLSx%2FsAd0rRXyWAThghO8aUP5hQhhcMcek0FumASCNYdxmEZhAF55HDGRnUj7CpgHNHXOMljtQwbEDMe7SEOHnUFJZVSNckCGNEGfzAH%2F80LenAelqYUDCZU6W7unEJLZYzekMiH%2F0QgfhIycdqz7dzAE46NVtmS7aYLIsczCPZTBczwV01KWPeHWI1LKWdIuTxBLBcpe6qAAOXrHidzD%2FHFWisxW9VzdDK04XgCFzv0Q%2FGFEMYVHUTODsw1W9H1HNuFXVuUgojHf66gDEQOAZ4gcfyGDG5GgIiyX%2F81doZ0gDLUX4NhESTgbcYP4hYWaicBG%2F6gsY5PYkXjB09gWT9JYyOHY42imTBNnq6MEJ%2BBpWoB%2FMZzZRGgZSHyZWeFFmPHF%2BwhH5a2Dd2BEvQAZQ%2BOEkTu3coCaLnFwmagC7qA4%2BJgHlYhX%2F6gGyYhup4TAZwWcztJgFQgDwyhXtnyxCxAD3Q2X%2F9SYR66FiswZ39MtshUAINbILosFFJPJgqDBVhZD%2FzY7m3tQSJV8lwWCpHsFm%2BBFUCNcob69pr%2BViRyrWvA9fryQSil9SoZ91r7DXKdCXfdoAZLNSvZbgZsgRzs4R6Xy3N5Ip1Cd10RKaA4QhQDpTFPxgBmILAMt%2FGMbhcqjIjGttpAakjfpgrkaTx7Ll9yAI5%2Bl8QidM8UgGeDYMX8JveyZxNiT6eaVzT5L3OOrVfjYBG4YIO7QRhGNhw2Yc%2B2t3sz43vhlWXDoRPQcxcTRgVKAYoOCVdJS1Cz8ZPGBgm8gSd%2BMFr9x2AiNToxF08owU8zU2oWFTMRwAnaRSL50mv%2FP1IqJBkBuCwcflkdhLan3METTuZz8xakJqEbFiHMEhILg8E5Se6QJGAVWHhWXHhvXUWGR4iGC4IN%2B04kRC4IBDHY7vZJqbVxsVVbDQ93JeAKDMHkQKoWHq4kEYAFvECjfigz1Bl02y5gt6cL2ikUXZRu1KELT0Z2uC1xLMwCuuAIPKADDCGjOqADQGwWRcADTqBfiIeiE0kd3ADcJGAImsgTPMAD3M4OKHq6BMvZZuAPTuCk32gGTLoU7G0RnK2bIJpk%2FQiQmY4iZYwQ4sEcRE4BOK5XI%2BiQHnkFE7K2VNeodcAddgEE8sUDdMoCOGw4z1AbwQ1l1sAWigKJVFcE%2F9xgpstmHsiAos9AACHaswQmB2zOpcgpsuCsoWknnaLsCGDYV77WKFa1dpunG4LtcTfX62yqVCXgqUfGK%2FEEUxmnD9yBV%2B%2F2mjktm%2F1km1Wnmw%2FIhn2lDGzvZGShUt%2FmCJItutL5bR43HCCsiHD3wvIFxCIIx8ZGBVQ1D04big3hbTwzkLYThuCNoMvFVFBlE1SledDhVIa7i74KG26hG1yLtdABG6ShHQVitSBjWcwKe8JBGqSBtXqLu7OHFhoBVcKoud8IurfbDBGMWkbmGaQhvWvMZ%2B3kGaqAqxEABVBKHTxBgPgzDlTAAjzg7I5AscQosSzADcgpFZxtrIFKBP%2BCgRwq4QbGZgaeyZOXDnUsRrjd6FlkI3GEu%2FXK2wyb%2B7upG72xahWEO4wWaBfEG7uVQrtHXFTLIhxyYKNKkSBuZ6NEQFUhLajKjKXz5QQyywLoZ3M3KksNYb97FaVSbaOWZ1ZSYaNUoLJ9Ain91lhbpxZmQMutdYbCoQyqWgJUwBC4YAZYICz%2FQMsjz5O0%2FFY2UcsnTB3MAQJnwBPiAQQ3wA6SSgJMYKcDZROGwAIkQAJE4Aq4LZDeHIoHawa%2BNXGgINAlIJF8W9YcJZ%2Byp3qEBXoUCJmOqIDIx5uVqXyQwdEcCXs2HZouy35UjjSfYRJafRI8wRbYIX36t9VV5av%2FnkFnbv25Vcu31NvVW%2B%2BrZqmtzKEUXH1r4%2FtnP%2FnCPb0zHEWUSl3TLUmfKh0dHIiBkkmv91qXpULXD6IYaEGOuvvWXYbVW91Zgj3Xv%2Bq9uygSs4iW0IG3xr225D1ZLrtoMrtQLCYYgmGuvCFMPrAW3XvfTwnB3KESaCEYWo%2BCgkUYgmGWrPi3AQNg3mJugOl5dzlP8IRjFInUUb1O1AWaOh4dKMnTDUfZQyVasiRt5IKCXcXUBcIZHK2ApN3ZOd18Pj7j%2F0Kaoj3b7aK4Ks%2FWeh5sEMjfEQdpQb4giMEbqP1Ypf0hrtgpJn4tKt5aLh4tTgct8Oct4hdeUl7iV%2F4t%2Flr%2BLTboLbC%2B3n8e6AEA350CVAqljCfXIWSoLKB%2BKaQeLai%2BUqy%2BLMyecP69RE4%2BhrxeUsAemPhaLsh%2BLfheQNEe6Nd%2BKdqeI%2FLMAyxgBLitIeT%2BK%2BjeKOy%2BLPAekPT%2BKxQfK7Q%2BqzFE8OWC83MZ2Y0C8a9eaIDF3sXF8Y0C8jnCHOj98k9fXiJ%2B8DEDHTyf7kB%2FK0T%2Ffvz%2BWAC%2FLjAfK1J%2Fgg1%2F7NNkMIifbxmfQIX%2BImo%2F8p1eBHX%2FLTRfKJgfK4B%2FgoUfK6R%2FKUi%2Fwtt1LZRfKsAfbJ1%2FLVp%2F718fXKi%2FWK3fIrB%2F%2Fbl%2FLbzfJwCi3C10BAsaPIgwocKExZwt%2FnwIMaI7MJrcRbyIseCtchk7QswGzKPIhPEAAYo3MmVBYNlUqhToMqU7TWAsxhTpzOFNkRt3dlTXzAGAoUSLGj2KNCmABM3U%2BezozdbTjiynZoxizKlViDC3RmzoFeLEimEf9iyrECRahSVPrk1Y9e3BrnILzqxZ12DOvAbP5gUqVCmACC9KFNWAWAOBoQ5eaFDKVCvfqHxXtqyMDqvkunT5gq081iZfv3nVVm6LsnJcvp3r3hWddy9m0nIBC56SDt%2B9Q4ttrJMnD98UADas4YO3JWlkzJQxr%2BaruXLrup%2F5hp7NsbJpvqidX2Y9EDRN2HVlV6b91nbSEPesFTnU%2F294GH2H%2BASyQQDXOiWs5IVAulxlzan2HXRZSRdeZdXldd152fG1XV7dEYjZdG%2B9hpl5oz1Yl3pIhRBIEQC8wM8cAByyTgqPAVACPocAMEV8SBHQFHMheYdZZgeCl6OGroEBCnlyofdWhHVNyNdznCXI4HgZ6uRgZR4Kxgc%2FIuKiDzz4QEKADfzUAcAP%2FLABgAYpnHnmC8eU402bbr4JZ5xyzhmnMxvRiWeeeQrkjJ5%2B%2FvkmE7qwCWiheMZiaKJyllNMMYQqCuk5FD0KqaKxZFNppc7YQmmmgJ6zByDneJpoObb0Saqh2fCSqqHl0DRqq38y6qisgCJqq5%2Fl7JKAYP9DhcHPJQQQcAkkQPDRzxheyhFmiTCGAm20tvBiS7XWXottttpum20ssXALbrji2uLtuOaea4sRmVCLbrva3vKtu%2FJiW%2B689hKThSTs2itvLLfwO2%2B9ALdLDB10EDOwuwInbC68DKPLiyRZIPywuQtXHK6%2FGIvLSyW9CgZsKIER5QA8oXgJpphqzFijgDdSiFl0PD6J2URBYoe\
ZkXIhmZeSclm4FoaV%2BVgXkWhNedQU%2B4SyWJlyiKiBPJewBwkAW%2FSjBIAtTyYVjjHvmBfQay34I1lRaveyhCallmSBS9bs5NBQbihlUEqFsM4%2BrlwSyhQOpIMcJPxkHYo8agyzzor%2BRgXIdY4%2ByyVz2EzmRbZcDdKNNmY81%2FX4WmKXJTRfRA%2FJYW12J6WEONasns7KNuAijzhjDJVCf%2B4pt3VeA7adY%2BRvY1b5hRQJ%2BZbRaOn81uZydY7W52GFHtvceRkfFtJFDYt900NpMPL22h%2FFuO5dw1yZ7z9PTp30lg%2BPc%2Banre31zNbFLbr6pNfdva%2F6CxZ%2BXbv37La6mO8tzgtL8ILGvrNBKG1Hgh%2F5JAc3vMgtR9TzivX2h8Gi9E8u%2F%2BNcACEHtt8pyH4INBvmFqg5B%2FIOQREk3lpGV7zSped0GayhBnPnv%2FGtsHwhPF%2BODoiWy01PhkVi4M5UCMAKoe9C9Iv%2FHgWJeDQa2tCGG3xLB5f3wbcM0HNLfAsQQZfAE5bGiMlDogeV2EKate8vUpxiBqu4liu%2BhXlo2WLzujg2EgYxjEPMGRnXorw5ZvGOaZzgGjvURjfuD45okeNa6FgWO5algF754vP4WDQoHu%2BPaAnkIwc5STyCronl0SNaKriVCyqSfzjkoA6T%2BLXN%2BBB4prykCfvoPu6YEYtoFI8E6%2FdE%2FK2yhowsiyPRAsmwSDIslNyKJb0ixEz6MYVueaAIm%2FRLJx7SdPkbJitl6UrHgTKSPSSgKMvyzK1E8365VFs1dwhBX7oQLTBcCyqtokpvgq%2BVVnzlGWPJQlrWDJPsROH7%2Ft4JS%2Flhc55lqecpNVm9ROpTa%2BDspzh7V04u%2FrCW0CRoDKd5ULYlNJ7zy2Ypg8mXfE6UKMUMyzHLkkyvLNMrzbRKOq2yzo%2B2s4EI%2FadCXUNKuTi0LPecikpXuhR%2BxtGfvAToT9M30FtKc6dH7GlTn8pEkwqVo14p6lOOutKWeuWlYYnpVma6lZpO5aZTyak9IRoW5AFyl4LsZUkZGpahhsWrPgHrRMW6FbJ6xaxWQatV1PoUtj7FrQ8FqS6tWteA3lWNCkRkN5F6w4ou9aJOJalnuIpTj77Vse4UqU89C1StvkWvXYVrKiWK2aEA1iqC3Qphp2LYqSDWJ4r1CWOJ%2Furarci1k3T9pF0XSlkxcjO2uNNsI5kaWR46l5nnNCBo2yraxlK1jJA1rmSRa8jKLpe5%2B5yuS6HrXel%2Bl3LXXWx2gUtanpr2qqi1XFBX296n8HUnftXnbKdSW6vc9im5fcpud9Lbnfx2r8G1ynDL4klkjpOm1VXnfV%2BYX5%2Fs9yb99eZ%2FnxLgqQzYJwX2yYFvkuCbLLi18a3qfKNb36zi1Sus3cqGY9LhYX7YJyF%2Byoh3UuKdnDgmKY7Jim3c4Kk8OCwRhumE01phnF6YnhneyY1dkuNV7ngnPfbJj28S5JsM2SVFdsmRrXJllyzZK00u65MPG%2BW2TrmhVb5JmlOS%2F2VFbvkmXd7Jl2MS5piMWSVlVsmZp3LnlKx5K20e7Jt1G%2BfFzjmvdY5JokWSZzfuOSZ9vsmfXRJolww6JYWWyXsZ3GLuvji9MQ7apGlcaZdc2iOZnuKmXdLpmHxaJaF%2BSaQTG2tTS7WgY6TmqiV83NTOeCs1RnOS%2Bwrb2N5aJbl2ya5T0uuUjHokpR7JofX7bJ8s2iqNtu2jDfxrBb%2Ba2cFOyax%2FEm3MTjsl1VbJtUeS7ZFsWyTdFsm3NRzunYx7KuUW8LlNnG4Vr9sqzUZ0wHEcb6TOeyT1Tsm9RZJvkezbI%2F32yL%2Bt%2FPCYDPwpBRfxwYWccCMvfCoNB7cwybs4pf4%2Bl7PqxaoX2%2B3vU7N4u3PtLrLXa1%2FVYhilbLwscycukoqP5OIeybhHNt6Rjnfk43YOuZo5CeHi%2FtzmQVz5U1oO8JfDnKUyNyZ6t24g80J5o1FdtrNT3fNjOznZQXc7y3HOE6vjOeJhLft5aZ52oMtF6hmhuqX1rmisM1nrcxe8q4VOZaJbduyZZc7ZG1%2FzVuex7duUy8h9UnIfn1zMKTez130CdpCLnfJI94jSRcL0jji9I1DPCOExYnhZI34kn99J6L08ekGX3tCn30nqq776o4TgEMO4RAoYw4fmPx8ADgiE9JtrecDnZfYZqT1Gbn%2BR3Kvk3R3p%2FU1%2B7%2Bfgi%2F56%2BDIp%2Fk2Of%2FjkXw8X94DEOqzxmEDs4xLrGIZQDrF%2F8OB%2FFJV98RN4XIcW4CcROodkcEdcPod5mjdKkEdnkjdeSIEBkDAcctAPL%2BAA6xAKABAG%2FfADJROCI0gEBCggl%2BdmGKV2cMZ2oMGAb8dzDyh3Leh4XUeBlGaBM2R0RfEDw4ALjbEPfNAsYeACRQgARcAPs3MUNOIO6iCFU0iFVWiFV4iFVegO3kAMUZiFXwiGX%2BgOxOANXhiGZ4iG6hAF1GCGaeiGWMgLbyiHV%2BgOOdGGcyiH8QAk8YCHfagOvFAOfjiHW9iFgpiHa2OIbziGZZiIblgOcdiIaRgPoAAGfP4YiWdYh85wh5eYhZDIiWDoDhGnAeLADysjJsyyLMvSLMwyBdECLZdgBVQgi7NIi7Voi7eIi7i4BLnIi73oi1Swi78ojMNIBT7ABMSIjLwYjMnIjLS4BMvYjMxoBT5gBNFojdVojc34jNnYjD7gA7HIjcgIjeE4jONIjr5oBN94juVojuuYi%2B3ojrdoBQWgPyEgB%2FugBCjTLGqgiqdYJmiSJqigCwNJkAVpkAeJkAmJkK%2BQCQrpkA8JkbqQCa8QkRVpkbrABKBwkRvpkA3JkR9pkJngkSAJksZABZjwDSmpkivJki3pki%2FpktAAkzNJkzVpkzeJkyt5B21gDCRJkv8T6ZMgyZBB%2BZHGkAhW0JNEuZEiqZQcOZJNWZGo8IMO8AOPEQL4EAhXGQhL2A9bUAL6sJVK0JUss4mfqIVcWJZmOYWLmJZqKYVr2JZu6YluaYWZGJdmqYfJ8A97yZd96Zd%2FCZiBKZiDSZiFaZiHiZiFGQknQZd0SIZ3%2BYmP2JhXOImVOJlaaIeXWYVzqZnuoA0%2FmAL6MDVy4A9hQACrUwKHgA8vcJrWEAKQgA8uoIKNY4Dbl1GEJFAyqJeJyZu96Zu%2FCZy%2FuZg36Gh0J2PJhUtFJxh1gA%2F0sDRCoQT0gA9gORRTIJ3UOZvio30CdJuhFIPWAQa7GZzjSZ7laZ6DOZz%2FtTlLkxVeyuWDvmIDW1AE2vMCW%2FADRVGf94l9K7idIPSCkPadDBKe50mgBWqgvZme1rSe4AVMnbcWtUZFfjdWLFicnXVN7DVQ4nmgG8qhHJqg8HShdYecU6WclCdbEhpYFGpuLpiDCYh3UzegHSqjM2qeHzpSIXqc7Zmck2eiSfWfAKaiBseiCIhOL1p4MUqjSaqkiWmjp4Wjj2d3X2ekGUF%2BGAGhxISitBWkJjekElikGbqkYSqmgtmk9PWkOhilqDelGFGlF3Glb5SlQNqfWtSd1BWgP6KhY6qnYVqmMHamE5imxremF9GmEfGmGNR6ULGlotelf%2Fqlurmnkcqn%2FxCIg0QKTe4XE%2FCne%2FJHXomaEa%2FnEbF3FXVKYXe6Pnkqqam6oX3Kao56qTsIaz34oHz3V3EKYosKfI26oBgKqarqq6tKqRVqqRYGq%2Bwmq1H0g%2FJmqzyGq%2Bmnq%2BZkqsKDqr9KrePJqmjnqsQaqO83qBFRqBBxqIu0rFzWrJ6mfqBGqmuXm%2BA5rdXqrggarCvaos%2BDqS6hqeO3e7RGq%2F41rnxWrrp2rryWrjC4rgLaru%2BKsIZ5rRGYrVJWrAzXrRDxrQ8RrvrjqRgBqlQRsNg2sABasHiasCHLmwtbqV76qtuaqRFrFvkKb8kqcf3Kaf9qbRuLbx2LbtGKQAcrsjvbl%2F8kK6wmq60jSmwXyHowi2sya280i3E2i3A4u0c6y7M867PyOqwOi7L2qrILMbELoQ7B8DEmerEXkbEZIaoYwX0Y4X0XoYBigaRR67Y9G69COq8nK7Q69RfB4LJ996O3OqdrcbYXkbZfkbUJMRFQ%2B7YJO7VyW7Vy9rB3d6xlUbG%2BErYRMbYYUbYX8bcREbgQsbYPUbiHC7r%2FkLhcOrdBq6MkyqNga7TUhrQWp7RNx7Qo57RgZLihW62jy6ila7V1O1opta8etrr01rpL97qyF7ukN7uXVLu2%2B6u4m6u6y7hXqxL36m4smxGR%2B00FqKD%2BCb1rNbgI8bnMG7XO66zd61v%2F9Tq934sQW6sQ2AsZwUtxwwt7xTuqeyu7H3uq4ju%2BcUu6iytpjSuljxtReVur9kuufVtHxyt8ydtRy6u%2Fkkq%2B5mqcUMq72lWiqmvA%2ForA5JTB68fA6tS2D4ywEQywE4ymFQxfKYW3Peqj2gui3NnBvvbBoeXAIqynJDyzJgyoKIxqvkvA%2FBrDrLvByqTAHoy%2F0mrDIYvDSavD9ArAairAFvS7Oga%2FSSe%2FoUq%2FZlvEMnzEOZvEiMu%2Fueu%2F5%2FvEghrFr%2FXDwBvEwjvEMrXF2sZ%2BpKa%2BBhG%2BX%2ByuS%2By6TUy3pzu079mjkwsRlXsRlxsRmcsVccxtc2wXIWzHvorHxKvH%2F6bboOLlxxjswjcKw%2BbLW4pMEHXcyM0bxs87xupWxtx6xvg0xVpWxa53xRr7rBrVxU%2F7ybcbyuU7ygpXyil7ykbltSwMyA8hyBFByBBhyA%2BxuQ%2FRuQvhybOcqo88v5G8u3xst6lbtGscv218Vm%2Bsb4jMb5yMDsvMzJHqzFgMzdHLwzt3wdV8yU6aybeMYt4MzuF8w7UswZqMy9KbEtQ7EuybEF37terMn%2BrJve5MZPDMyPI8puPsyvascrmMtbv8Vb0sGEUgB1PQNA6gBBk9Bf8RJhX9PZUX0NtLp9b8dNzMcQZdwwgNrMRJtUAbzZPsnrOarIHAD%2BsgmovBhPzAD%2F%2F%2FkBxboA95UzXZmUPYXFjarHEmHXUordIQTM8lzNCm59DpC9HQ9oMaYA2H4ACHwA8vAABycA9KEAM9wD3iMAwaoH9cXV7rbKbt7NI2pdRLvacKTbZZrLlIjXvom8%2FejA78jBAq5QAE4ACXAA%2F%2FwX9bsAWP8QLUWQRjiRTNgM8Up3hl5Q0Y9dgl3SNvDdcJ3dTWNtlPbWiUWNkeoc88UTMR5wDWwA9hAACnqQ%2FigA%2FiUAL9yA%2BoGAa1XdtqQAvIkBO7zdu97du%2FDdy%2FXQyxENzFbdzH7QyxAAzIzdzN7QxL8ArOLd3BPdwNMd3Xzdu3cAvYzd05kQUpndnnGQl00N3%2F3K3c5X3dw43e1y0x6z3d2u3ezl3d8d3ctPDPSOEAWxAK4sCaW%2BA3SrAP9zHbq0gctn3buU3fzK3eCY7c583gxw3dD27cCy7hwQ3fFR7c3x3eCU3eGA7cDu7hvU3hIc7b7U3ivX3hJ54T863iOWHfghEYKcAPW0kUDbAOrJDYRrjYqt3YoQ0VkT1Ync1DPo62do0Row2j4L3h5CnXlivkbb1YoH3ONlbaP%2FgC4gAHS8gPfKABw2CEL%2BAiH8gKAKAG%2FKCfMUfSrEzUuGXUlh3LtLvkk8rSigvlZEzkR67XfH0Q%2BeQArqAP%2FZEOKUAAocAPrCAO8MDVNI0L9OAKH32i%2F2muqGtOYG1Oe0autpgd5zTa5INM14dcSDC9o0R7FBEgB6FwCNPnAKV%2BCGhNAGkQCoGgOGiu1n7K1g3r1mCa6Um66cLc6cZs6WKB1yOB5B2h5wbhvvtJmyLtt5Tefb%2FOuZie6x266xAxzAtxzAoBPSfloMjqy6sc6QI90p5NaNAe7SsN7rjJnqCOuqIOc7%2B8EMFM7b3%2BEMVs7c6OzORe7gY67Q9R7Qpx7YQb7DiR59ZrpamsZ97%2Bqa0816%2BM7p%2BF6%2FnuoZvNxOLubQEv2gPPqUeH8Bir8JYr7wthyFZoEJIphSpBhQQxhff%2B8BB%2FoHJdhQsRUyePDim%2FzZ%2BuTZQs0%2F%2FdDukJL%2Bkkxux20Q21IPS18AxRSBCmIvTCoBLCIPTdoA7hMPThsBBkow7kUfXYpeQsf5jjbBFDXwvdYPQIkUzqgA1C%2FwxOEQxCL%2FVHbfN7LvNub8DDTrElv9cE76YGr2njWvXuwPcGDO8PQQzkcOeY%2B%2FNO0QctIAGJLwEeUAVnP%2FOVwAALcATbqg45sAALYAjx8AwbwAASUAuaVR3qEA%2B14AZOP%2FOj%2FwdYr%2FXmjmPqQAgzoPgS0AJxYPoHkUzucAWX7wbxEA4tsAASsAmB%2Bu%2Fge19RKAzHHwxnDxvhIAzJL%2FD9HPY%2BIQ3BEAzdUPcZL222WvXPMAndPwnCEP1i2%2FH%2F%2FSwZ3aAHjTAJa2%2BbO%2B8OXYAA7w%2F%2F738CwiCFlfD%2BQkD5M%2FD%2Bmf8MFoAAACGhljp0BQ0WLOasoLpubjZIkKaOoR0LMAgexJhR40F3YJL9AxlS5EiSJU2eRJlS5UqWLVVGAhRv40yN6sogwJkT5wxhFw0Cy0azoDsnOMvEC6cC5yR3QjWWu%2BVU6lSD7jSBaXpQ4qQgFiR83RBkUVZ3hr4e8TnVmUKM7sIRepaWas0gX8feKjdX70Z1zRwAABxY8GDChQ0DSNBMLk2CcUTotAClJ1VvtvbudSesSiqJtXBKiHtZNLooxhaPVlcqZwsybnTk7OJOXSWcQppK5CsxrboZ%2FjgNxXtmAYHA3bgTDk2F0wM2dfEWGUCQA%2Fdojh5dXseeXfv27TBlUncXJ%2BcGKFxM5Eyym5i36Rh1u4NiFGmLpbLbL7yvGyq66bjv4z9tLquw0iqcKnRCsAyC4ukDpyACnGmtjDbJAYGBqMOoNwTuygtDvfr66zARRyQsMQjdCycJBHMSYZWsnKrMQ6HU%2BWMDAzqRrRYGELAgNBmnKu1Evdz5AycVwpknHnWOgM6DbmarbR50aqkFnRetROeZUlLpBkv%2BNPwtuOEu5M8dbEqpxZxr2EpNAQQ8ECYcdQjZKZxwfuzoI%2B725LNPP1Pyjjp1hNkAJx2CiSeebo7IqRSC%2FyTqphJPugnnSome4dKe%2BBA4Khz6ENgkHmG4lM2gbk496NRuoAoH1SlraZVSjFTFcMAr3ekiJwl04GIGN%2Btj0MHiAlTHnTW1ElOCXOTSzan%2FNByLl%2F8%2BFNI9v0jElkQTp3LnitXi6KNCnHIwRyt37NPKG2LKfLS%2FUhc6d7Fi4zVInXA8wKkUJXXkMa5iT5uXWXenzSjIH9GJJw%2FlNmlunlSqqIIMOWlD4IhJZvhqBkIuUmcSHfBVQAQdKHkUTOCEI85KT5J4TIIWmqBFNi4eQyDkJLro4DMTdJDTwzz%2FBDpoobELdLTwcNpAGLJq8WCGLgZSpxaWaxahhT8ucqeUI%2F4KNaGMIOTz1KitETiBjCfVeaYFE1TwRaJSTDAhB2yI%2BQPuPJKQwIIWTjBhBuasrNuEIGq96kV1PMkpiIGUnEQ4A2ZAuEEEHhyKISrl9KnYcGqphBYv1QkG5SrrdaebWnxBOC07rRw0GC%2FRgXYeW1Y52yA777R99YJWR7vK2zNHR%2FeFrs22%2BMK2dVYWCXCCoptE1fEWJ4b529wQQ1Lp6aJndqkEHWGuD%2BcZX3y5s5bry3xmkUWUJv2ZTQzZRBj%2BgpeF5vWj3tECbMIpxRCo6x3UIiaRPYMIY3z8MV8punEljRgMT5vICQNyEAdPoMMe87gNxUQgAejkZCzu2MTyEP5EHN745mRjKtYihIOgGTwjHjnoIAIex6ScGEAEPauVdYa2Qx728B9FE407huAgBspPSWg7wYoQYIgcFQonMeTUfGpYwyPw5xnLU8BAQIgTEcwtDk3KiQ6cyBQrMQoBsQFP4QwSj1y9SRjfQcc83GCCI0gsWJN71CaCYAIFSEAFRyjFbbrRhRYsTwQ56EOlFsHHmp2gBbIoliyqoAIGWGAGZYiIlRahAhX8YRI5sIAFcmCIi2ioD2VAAQNEAIXQQI%2BTTLRXEDjpiXjUogUqqEIePCCBGbTAl5u4TTBmoIJHcox4xkMmYJAnFHeQgYuZtGIOnvCHuLjDExjLiQW6cP%2B2I%2BTNITjpAxm%2BYoduOqgWdqCZBeLwKGxwAV%2BfmUEq5hFCXW3gGfzagB0%2BJQEo9AxtT1ihBIaQi9vUxQKTeIIIW0BKmjjwR%2Bo4EIJYQ1D%2BUAwBIrBDHJyYBNnsADpB6AM6ceIGJZksWbXIjBNFEIcuiPAI7siDuCQQhDLYQUMbOEIVcJdDPfnQpz%2FlDhAvo46vIYCk7qlKF6DTAjHgQVxJUJIZJeCGmOakU59iQBX6oCKcLOKExLEmTk4wNztkMwge8MSmqiCbZxQqZUZT4%2B4%2BVYXv6MZe7pDJHR%2BUNRFCJhVuKSqCumCPP0DRAKWYRyneqROeNKewCFAKFD3RFA3%2BOW41EXHH1wxgByWFI4kIoEQtkSbCE%2FTGAHS1kuRO8KThhSiZyFwmTTKLk5cWCK%2BdcaJODHAUoq6oFG2UoU5ymxNguqMKUDRSNzaB3Hvu6Ik1jI06pKEhnaggezvAiQWgqCwIOVRG9urCCnXigbFAaTibsIc9FIaAGRCkE3GAgjTSG1G6lnCJX62FHMXqi3nMwyz5skct3OQkd8xjEeM6F550CFQGN3glQv0QNmjWBzhmJDV26EIqrtGOA1cMOO8kRH%2Bf8c6rMi9R6HgqfouFOLKRNSeGmIf8JsFFbMTDEOPyWVzR9k4mFqQbzwCyNIAcDr1KJAjQmUEcykCzMtj%2Fo8Mz2EQlmpBd9%2BXATQrIgeIkrJwyVEGEPItHkcTqhjI4kQsyoe4MxAAFEcbGHULASR46qxRQ1dK57O1ah1dbLDgjIA5wBNFrkxnbmajjNQjg7EyaaQADjGwTXH1pbw11hRygI6IIIEMnuMAiQhhihWWYRy20i4A8vE%2BE2Asv89xgOueeAH5DREALzBGPMkDHBITwmAyhIJvAVuG9CwAnAw%2FiXRkVuBZ3O09O9kwxJxXrxtFZUKgX0QVsIuAKJTXhSd0hLjdIyUpFjYM9UjFgzD5bOgf7mYPVve6RQHgu9oLBSCtspXe5wx7PmIQYduBEFaCDxfZcUFGiGDYEkPGO%2Fv0%2B6YrF6uI3nc1en5rEPMyY6DQSiD%2BqwclkrUSGDnjA4x7YgCfsITnKTYIMSXhGejeNacLuZBO0uEYfFjEpdyTrjfEo60XlGQ9CiHASLR9OKdIbvfbatwXdIMY8bkK2BfZZzvaic6j4hYD0ALkbNJvEh4cDyXodU9DZInRN2grOeWNEGJP4gzDsMScjVaqoLSCy8yIqnVCLMA%2FpbSNH%2BbcIQtgDOBrSFzo%2Bm4q1T90QFyzF8iQQp89OIh%2F2EIZwRLDAokonUUU96kaIjaHNpYLIpZsErDc0D4rB3dnj6kw5ofOra9s3TKLbNk4QkZV4CNwN4ib36aGN7gWz2%2FcN%2Fna3gIpa24PAD3PdgILjYniEebadIPABG8Sb4g5K4KQFWRKdwltMjJzrwCe0xkkVulEoC0ym4lkB3Qp7HI%2FjIgi9JF%2FQvScRByE4kQz2mHFOKqADN%2BRXIpFHIUkDtYKIB1hrMjGDHCt5NsixLzKIh1tQh1TYEQWQJ6ebM%2Bmxs646IuPCiSuwh2fzPq3wuq%2FTFsWYCg05iraoN3dIBTtIgs9CABOgPBPjD%2FbDiS5QkoSLBzfAiSdoinmQhkXgAjFqlNKhmcnCHx7JHjFhgGAQBixKAiiAgoTCiVSIh6LCQSvhqsxrINN4qG7QgeX5A5lojqsbKdKjrekzN4IQFxW4%2FoJF2JTWMynY0xBC%2BA53MKPbG7c3KTfU472e%2Br1A9Kngowpc4SLWshLPiLVNmAel4hEkQIRncwJ7gKCLYq142JQSK7jp6zCEy76w2r6cIz4EWh4VkBy0yDGLs5fPSkF3mCMVGAHiGjlh%2BadCYbSccEB1AC5d4QL%2BAEASOjQ7JMBMBDrKcYcn%2B5Kucge8MEMEQCwLhDoM5Je3codOEKsUwYkxFEHXIsESrBYrgbUguBJzKIO088UhukUnWq3ZIrXvsMEzUpJfXBweRAAfVIc8UL6vyBcjzLgcyR9%2F%2BcVguKInYrQYssKi0kZ32MKyM4jNQw1xObp4MLYV%2BgM0RADb%2F1BABFuFAXuGebCHNpLDbBMdTDSUYhGVd0IEhxkw5ymLcZFIBQNEQZTJoSFEbmExa0MYpIA1gcCGMVqGdlAEnEiCuluKeVAHc%2FgUTewCo7SHiLKNZAmGAsu%2FseK%2BNNSK15CAdyIjwrE4%2FuAqFWCt1UkO6ZnFyQEssaoCQ6DHXIyHTbiCQtIJO5RHiRAXbbSSJzCKYnw%2BZLSvo4DAsXPGeYDGpJDGHQG4g6jDx0ia3RjBbjyMsNMIV1SOZyALjDuoeXgCW3ODVJjKGWxHAowoHByU7NvBHpwHa6StRVAGMwqkZkRCfumR%2F0MZJ8SimooDO8iD3KRMhJQJhZS3mXBI0f9ImJyYATvYBDegs%2FJrB4rByJaMDhb8jElAh06gGdGcwzGJh%2FxDACighEXQkBHABhZ0kw0QIOcUgUkwhJ0Cj96byfb8k5qcCnXYlMnBTeq6gnkQEwTog2WghXiLNTkpKhXYhGe4NE2UAEIQBorIRuCwv25IBQ2hSlG8FTphkb%2FhyhehPvSYtURxB8kBlbIMgnhYhezKr4%2BUj1qYBDtAKVrQAzqrghhDGWFIkk2RDrx6Bpr5A73UpJ1IRjziBQNDGhfqsz4wymaUOsP0EYQRj4tyk12zFm50zMc0QWdZBecaghqLB2kQFwaohfEDsA8UK8%2BUM9C8wXgkTXp8AntYOub%2FkxI6%2B6tmJDx3gE2ARBlfaMZFeDxhoKpNeBLe1MLf1DwvfChzEALkygk3kA3mVEPUG7HP%2BBTmkY3rfACouTSdkIDyGlFlQ4ex5CIcWs%2BYdM9QDaqYwBCGED2Jyp4%2B4yXxmrwtyiad6BQ6y67LMrLx%2BJWLYrhRtCKaQYC1Kra4Wggzio44UMtDI0uSi4extABPSA06G6wkWCphcIZiMCMygNGa%2BYNFcJ%2BcqAJP8ISi8oCOFDNj5EvqKgNboASaSQ921IFnwAbgOlIEOMyFCB2dGIsnjVJv5JalizUouAI6MwAcBMwycB%2BaOQG3izN3DE0zRaHSrEc1tb5a0AwPUhSa%2F4ECO2iufpHNMWlE6BCBRVgFJrGh8PRT3zQqhiyI4BQNtKmC4bqodaqos1DDr%2FC%2BY1whA9iAMtglFWCOMJQARPiwvPkfndUJFJg96gms8kMHMzKAI%2FlGZmJPUZVaoiHVUu2GKxCv4WClR7GlJ5KASfoKZi2LxcoBcZoqpIABCRiBbxqXYHgUT4BBC0BOPyKrr%2BAojGCjnNC4VLQUYaAuJTqCjiQ5M4lFHvlbHYgHShChDUCBd7IAlCLMIqxUnfgDvBKzEDxGHrUvnMiAX5GAQJJMpBkuqRvPJC0jZUPEroPSfC2RKXUW6FEiAwiCs4GCDsraHrlCRhtThDmugI1HLP9anDNgtKHEuOEYNRnqFOoygAH6DIAE3syQVZ2ApdcwAAr7UwPgwoIR1IP5v0WwHkPQ1qwoB1s4nWcwlfGRH1%2BMREPoCQOCFe8ZnycJh2DwhWDYqZrzXvgphmuol27I31SgHvQ8n2KL2qk14Aer2lLNjPw1BEjKHGzwXj1wEfGpBWwYiu8BXzsZn0wyoJ4IBuuZBE%2BVLu%2B9nw4uB17ohvExXwBSOutTz%2FNzj4bg1c%2FQgUWQiDATlrK42Q3ogkIRgTdahE%2FpoBYgo9DdR3QoM504AUJoChzGox1lrx4lpPFgYv7ABmOlOjOSuuWZ16HoMEwru0BjXSl92vnJg0e9KLP%2FeZRFYZE8OAITOM95gAK4qWIrKQO4QVS0URsVcFuYgpvosoN3WgAomCMTeAJNopkFiB%2B%2BaQF%2FSZu16eNaqIucUIEeU4cngJse6xa46QNha8jtPZgyORd6KYgTbhYAyZxRbheOOeVTJp1RRga2gBdSnpd38ZkCPuBcNgn4%2FJBRtuVXXgZv4A9XrmW7YuVHUWX3SGb9gEBX9h58%2BzSUxQxgrRfgWIQ%2FwGb%2F%2BZx7ktih8AVs%2FgNfkNNakIUnAb0%2FwAM8WIQFqhdKwOZFuJNi%2BZ53Zmf%2BkAYqSV%2FLOZ2C8AVyDgds0ANsjsp6CYdr%2FgNmfQZZ6FJ7oZL3xY94KN693cYx%2FybjIXHQUsBoabBlgkgFjKbMWLmTcGAGWygX2zmVnaKV3TnpC8ZoqElptGnpgrAFZugSU3GVYa4FjCYVk5YVle7pQC3jH9mPUJ6K4yBqp0g3XVbqk%2BDlo0YHoHBqoRhq9wiC3OriC%2BULvOJQgWmP5nieYU5lY7mGX7YSDjWXrdYKYm5lu%2BKFdlCSjNDqVQagtMCGZxCGQ6u0mmhMilYm16UKYwaYtTYIdbGwYUnrtO6Prj5lYsgGw0bs%2F4BsIVHZqJ7qqN4Io7bsyMTlpV7qpj5qqM7sp4iKjGC%2FDpKAHsMTag5tg5CQ1c4IvCg2XcqtOsZXvm7doP6RGHFtjADt3f%2F%2BZNz2kMr2bcz27aTm7OMGCc8m6t72beFeiGnrgs0EbtlSbddubd8uCNj2mUmIIScotL3ma8gMbd3G7qcOivImDVB2bed2beLebeNGbs5W7lBm7t1m7xr86lC2FfS%2BbuzW7lKtBYhJS0%2BtbdsWDPHObPLG7vre7cl26vsObfd2bfiOb6We74Nh8NWGcMve7%2FLub9%2F%2B71JNlJf87tW1bQS3bAX37QxfbQc%2F6g23bAlfbQqv8Fy%2B8B9h8cyGcafucOz%2B8N0OcdcWYwMPDBSPahXf7RzPbBcn6h13ahkPbRqvcQO%2BcRlRcsoebezucd%2F%2BcdcO8tUeciJHDL%2FebSR37Sv%2Fj2omD2UnP2ooz2wpn3KprXIPQfMXz%2FLiru7V7vLV%2FvLQDnMiN3KnNvPVrvOjVvODYXOidnMO3%2Bw4D9U5x5BCX%2FM7f%2B88D%2B09D%2B0%2Bz%2Bw%2FN%2FBAP%2BpBD21JD%2BVDF2pK3%2B1Fj2o4d3T3hHTqEPVSR%2B8t321Mz2xNt2xOP3Eyd21Qz%2BxX%2FxFSl5FED2VU5%2FFGX%2FWZbPXR8PXgNvUZt%2FTMpnXLtvWoxnXCSIEUCAwHeAENEAxt53bD8HSi5nXLXnYPAXZmR290IPajVvVjl8lkF41ypw5hT%2B2u5HJZ9u8O8e1qF4wXkAdWAAwbsAZ8gIctCPiBL3hw1%2FXVHveolnfqOHcM%2F6H3H1l3om53dw9EeL%2BMhxeNiedb%2FsZ3ENf33eZ3wCAAVugHgAcAXFgHJWAFeQiBlW%2F5l4%2F520bvhndqjheNiJ%2F3Zl%2FtitdvY8f439P4vdD5vfB4rPbwkAfykRdy8A4MNZAHeAD4EMAHSAAAJeiHKdAAfDgEAJiCrT%2BehR9vy0Dvo98Lnh%2BNpMcQoP%2FDoZ%2FaotcLtJ8Ltocre591pvdypwdzqAeAF6CHMBgGgLcBfuADAPgBflCDF%2BCHOkB8fmCDwnAAt715sy9vup8Lte94n49wvY9yoYf7dZP7ucD8qbD7lX32GC%2BGdJ92pwYdEwcMB8CFSwCAwX98OQCAwpcD3f5%2F%2FDkAe1YA%2FuC3BV64heI3%2FuNH%2FuRX%2FuVP%2FliIBeaH%2FuiX%2Fltw%2Fum3%2Fuu%2FBSPIBOLH%2Fu5f%2Fuf3%2FvBH%2FuoX%2F%2FLnhSwA1dAXxEigA%2B4v%2F%2FAn%2F%2Ff3%2FviXf%2BznBUnIAvev%2F%2Bun%2F%2F23foCIdWsgwYIGDyJMeJBXpQQAHkKEGIZfoDDprE2xwY8PgB%2F81LzgV6fjRwAENKBEGSJYuZYuX8KMKXOmzGy2aOLMqbOcrWw7fwItx8RY0KI0vd0yqhQmuGLFwC2Nqg5Msn9Wr2LNqnUr165ev4INK3Ys2EiA2EVdCq5n2qVI2ypVpwmMOrhFmz61W%2FSWN71BjzmIKJjPPXn06P7hG5ZCHiQAU%2Fop0YCv8RbIgh8SaKYOHefOnj%2BDDi0atDdbo0%2BjTo0OWDbVrl%2Bji2JsM%2Bzaocvdsq0bdDFnu3%2Bjc0eVLPHixo8jR242HvDdrJvrxg3dtru57qbXduYbO%2Byk3F2raxb48kMHIc6LG6YBQCh6aoatW9%2F%2Bfbr1lxNo%2Fu66tH7Xz%2FunJhttAIomHYGn9XbgaMJVlZyDD0IY4VfLKSjafxV%2BZiCGnlUHxnUbeqYdiJ95NyI64Y1HXkShNAZACKzIY00RD5UAo4wq4jfgiPyZyNmFJgrYo4YmJtgjgxIimaSSxVHY448gDglihx%2BaKGKP6JQ4IooqCkYAAf8RafAlmGKSl%2BOVPDrZ2pVBmhgliEWaeOSSc9JZ5z9Nmvjkhm5iOOWVVvaYJYhbclmooffl1yOaearZI5sj8okhnCPKaaellyaH54h6Yhipgn72CKiJgm5I6KGnFmqmoqZdySmGj0KZ25WTSjkcprfiKpamILqqoKcHglrldoGW06OpqCIrmKomLrppo0DOJqSsPdK6YaW5YpvtVbtu2OuBvxIY7Iiijkgqhscmm%2B6yO7Ka5pWxRdvmtEQOS6mt2uKbK7cYeksguACKCyK5IJpbIbrpIrsuiM3y%2BuyIsO4574jV9nlvvhdbum%2BF%2FQL4b38BbzjwhgUreDDCpyq8IcP%2F3ToMIsSdSvxmvbU2iLHNdGqsIMf9eawfyBiKjCHJB5p8sqEpY7gyvy1v%2BHKFPetHcYXX3ly1hDkfuLN%2BUHP3c4VBVzg0gUUbzSXSFSq9MdOvxgtpzBtK%2FanFVtPtINYEav0d19h5rSDYCooNINlll5kos%2B0y%2Bq7Tvr4t6czWzl235EwCwpy70l7Z94F%2FHxh4f4MTrqzh7L6b93eLf9t4hXEDG%2Fnkr4d1N4CmY7f3dJoTyDmBnusHeugQna1g2jqvXSHq%2FqquIOvhug6781zJ3h%2Ft09kOHe4A6g4g79%2F5%2FjsAwR84fNbFK3h8x8kfuDzAzT%2Ff%2FraVt0o%2B8plb9%2Bfj%2FiMXa2L3v4NPoPh4y49A5uMZ%2Bgikvo%2Bxz33ti55%2Bpged6jXnev3JXn%2B2x539ha5%2FAPrf7AIIoAFurYAAOqDPEqhA5zHwOw5sDgSBI0H9UFA%2FFsQOBgmnwf5wUHoe7A8I9SbC%2FpDwO1Q7oQJTyJ0VAqeFv3nhd2L4nRlOp4Zlu6F%2BctjAHeqnh9xR4m%2BC2DUTEnFyRsQOEn%2FDRd0wkTtO5A4UoSNFo1HxO1ZUIRZP17ZYvcuLfANjGOs2xumUcTdnpE79QnU%2FoeVPS%2BLx3qHiyJ05HrGO3NFi7X4YtUPKrWZ9dN8foRPI6Fiya4UU1rva2Jw3nsyR2IEkGSWJHUpS%2Fy%2BU3NHj7fi4yap1sjmftM0ga5NG7KwRO6YEDioRpsrpsBKQrpwOLB8oS%2BzQ0nq2vKXNcgmcXdaml7D55XSCOZ1h%2FqaY6hrdwhDnLMXdMWJ5xGTrNElN2FnzN9iEjTZfw03oeBM64NyNOJN1TOgk05PLhE4zWfjM6UQzgtN8Z77i6ZyBJvGgERzluNjZuUQOapGMTBU5VWbOhqFTR%2BqclUXX506GSs6hupnna%2Brpmns2J5%2FN2adu%2BpmwjibtoywLKeZImrmFojRbKrUNS13jUtXAFDgyBQ5NbWNTVP2zOQHVJUSBU9CIrvOnJw2q1YZam6Kq5qipSepvlvqbptbmqf4owynadLo0nsorq0YCKldx5VXYgDU1YkUNWXdj1t2gFTZqbSRbhedWtcHVbXKNE13riqm7viavqNnrafqqm7%2FqJrCvGezRChu%2BwxIvsXj06Vy36liMQdY%2FVRWkRF1IUYGVVHsYLZVGN4ojz%2FoPtOMT7UipFdsSmva0DYXf5eJqpNeG7LcynO25amtbRInUo6Vb7W6uasbWAiehLmyscOuUWtVI9jSUXRBygabcJzLXYM59bkSiCpypXpO6urEuaxdrr%2BB2V6jETVxP41Ter52Xjekt2XrZ%2BxD3%2Fga%2B8pSvbegLSvvSLL%2B43O85%2B0up%2F%2FotwMIcMNEKbGAE70bBD%2F7lLcwgDDn8StiuFAaphaWE4c1p%2BJscHpuH2Qti3Yh4pQyujYN5id0uxlihKE7xY1e80xZb68W5C%2FJMZyy4Gj%2F3xrbJMVF3DJseZ%2FPHu9HuErlLZCR9NzXhHc14RWNZ22DWNpoFD5Qh4oBQHIJGkLgEnX8AAAcEYhiXSMFto5vT6ZL4aVrWDZd3M8Qv68vIb0Vyn5SMPSYz1cmfa%2FND%2BPAPVjzkMesQxzqmAIBD6OMS8BhGitqL2w3qFoCBZpyJKzZkRHtX0Yhl9NQcPUFIn1XSvaP0D%2B6BD0wDgA%2FyCIGXAKABeYQCAGHoBxEK5%2Be2AnpN6SwxaRn7aljPKcyoGf9zgQbtS1vDENeA1TX32uwAa1zCGsAOBbJDoQQA2GAfHCkCP8ZAngBMIx763je%2F%2B%2B3vfwP83%2BcgRsALbvCDx4MY40A4wxsejyhQw%2BESDzg7eDHxi%2FfbHde4hjsw7vF6eBnbdhNEPTyOcXcsY%2BEmvzg7CL7yidcDFGAo%2BcsdrnGO11zivGBHzh0%2BjVJfJhDi0MAwME0Aa6wDEtbQRxE0IgeSPP0Hcpj61Odwh6tjPeta3zrXu971NqDB62IfO9nvgIY2lD3tar%2BDD9C%2B9rd7Pexwn7vW0SB3utN9D20vBN%2F77ve%2FAz7wgh884Qtv%2BMMjPvGGxwIT9oB3vJ%2F98ZCX%2FNz%2F9wAGHzie8m%2B3u%2BbhfvfOp70NBeASEfAxhhBYAxfrCcF6UnCPSzgd6gB4wRZqb3tBJCL3ut8973vv%2B9%2F73g90AD7xi2%2F8RPjBD8dfPvMTgfnmQ5%2F4w48%2B9Xmf%2FOpjPxGOYEIbHOH974M%2F%2FOIfP%2FnH74fyoz%2F96vf%2B%2Bdfv%2FvdjwQqOyH71r09%2F6k%2F%2F%2Fs13RBuYMH%2F9N5%2F9ASDz5d8AHp8gjJ6KBMI%2FGAZikFoKrIcDrEMopAA%2BBAIAKEE%2FbAF5ZEY8uMMHgmAIiuAIkmAJjuDAmWAKquAKuoPCseALvqAHQpwHwmANmmDF2WAOluDG6WAPgiDIkUI9%2BKAP7twQ9uA4%2FxCDEepgPQACySlhDqbcE9ogDkohDMbczFUhDPJgFrKgOhQhF6pgPGgD0EWEDYTBGV6EEpSAPLCCBkwBP8jB0VlDCUACPriAs51JqnXQqqVOq00NGGgClZQLuX1HNgDDlcQDIMhaaNHap4BbE4lbZhEiDVHaQ6TeQ7ABPsjDrwXGFCCGPlwgHq5KtDnKtAmaH8pNIF7JmrmGISKiIloOfxmXf3mI%2FZTSJEZRJcLbC0AE7RUBmdCenfVZHpIitDxbH1abvagisVyJK%2FZIIi7ibjUisDyiGkWimuGiG%2Bki%2F5waDumhDvHh%2FCRjrSzjqGQjdDijiUBjLFbYLF5YLRrSLf8ayzZmUDdW0TdeUTieDyq2TjkOYjMe4jPCYvxcSZmFxpllxzXWBiumBmdx1DF%2BVjE%2BjCmy2jhCjj8SzDk2RzqOyDoS5DSGSzUCk0J2h0aGEz3akD3KET7SkT4SED8yD0biD0C%2BYjSqGkgCjEh2E0m%2BBkOihkOajUo%2BEktGkkuGEEyuj0wiEk0KpE3uIU5%2BjE7iE0%2B6hk%2BeBlAO4yh%2BZClC5D5aZMUoZdiY5G9wJIh4ZHEp1nHBIymt4ljWFEpOkVCuElG2klH6EFIiUFgCjlvqRlluyFnKYlrSoiDCljzqD1zCkVwiE10qk11ukbfVRqGhESAS5kz2iF9iCGC2o2D%2FvmNlmpdhKhIZfphiAhRjCpRjVhJelpBeXhRTquNAouVoDaYttuU8iqaNkaZUmSZVoWYsqaYQUWZtXmZAvqZTgiNU%2BoxUxhRVqoZVjgZWiuLhSKTLUCQy%2BtZPsebu8KVtYGaFaCaLuaOLrWVFgWZG3WaU5eZ77WZ89aYz%2FeYXZadsuWZHwmZgymZn0iYzHuZ52paU1QaVfZWVvQaW0RNkwoZkUkdw6qeJdKeCfOeRhWeSjWdhCmdoGhh0EeNWGiNyXhJ2eqZYzqdZ1udm3qd4fmiGlWepBINDXKipdSWqTWfTVKc4XudcxWcFbWdtNOiBPOiiRWijTWhypei5rGiL%2F7pohsYmdb7oUX7lH97ocoXoX44oeHKmieanOdqmkQJPeibYei5YexrUe%2B7Rk6JXlGbmlEJolUroicLYkKoXf26Uf8IGgOKVgLoGgbaUgb4GgvqSgmLpcNYkO1Jpia7plf7jfmrpgXFpiHnpiEnbkt5lk6Yim2qnmXonmvqomgIppT6amxIYnDKSnL4GnUaWnaoGnhqVnroGn26Tnx4qgxInfRpnPnKoKAXpZ1aoeSbq9ywqjjWqjoEpVklqP3Iqjlqqg2LqrP1ord0qgHlqh4Gq94jqfvxqlQXrdYlpLZGpgB0rjyYrIy6rIzYriuYqbUUrN0LqSsYo26Rrag5rTP8WK5QCalMKapoS6qYaakZmaaJOq2qQqmpda329a1LGa5nOa3HWa6beK7MWrDU%2BK42daz2261yuq%2FHMqFfWKGNt64Z1K4H0qLJqKsPmq2VaKL%2F26pRVa4AG7IMNbF42LMcerKwmLMgurLi%2B7E4%2B7JNFbEpO7GJWbPlc7Eu27GrerD7lKGzsqMd%2BqzSGKzWOa5uWa3PtbFz2bGn%2B7IGgalipqmqwqj25qr7GrIjOakvWKt8op1IxZ2o4p2hAJ4ZqZZLKaNUKa8YqY9E2WccCyMeCa8ja7MguJaKarNyq59UKUNAyKd2So91GGt72h94yLd86reKWVdqixtqGhjoUaeD%2FIql9KmnZQhPlLsjXkuyIJG3eLu1NNm1IPu2S5eyksaiW9mtq%2FCt4mWqAGG6kIu5FSu64Ma5%2BOC7qQq7q7u5lge5oWC5otK3oCG6XEu4H3e5jZqs0bayM9e53%2FO5Tpm5Orm6nRu2b7mrsosbsilntokbW6tXWpkbXvpTo%2Fi2sBqqG1mzk%2Bi2I6k%2FmqogDKMEU5G8IPITUTQGZ%2BC%2BZKO%2FmkmjnZu8IFe9Bsi%2F9ui%2B9wm9v4Wc8du%2BnFgq98QM%2F%2FMMGboE%2BrMM%2BtMgGd3CLuK10PnDcei5CJTBoCMf0Gm31csf1HucBJ%2Bf23lrr7hp%2FqgE%2BKMEL2IAGNIA1qEcg8MML%2FxBAemhAIOwDL44w6ZQwu54wdKgvUi3wXrowdsAwrcqwEJ3t5NpwufEnJKxD7bWeBQJAEWhgCYBiGWsgB57sf8ZqAZtwFkPiT4HC8GJjFU%2FHFZOtHJstDYdbF18QlB2dPogDPohDCmjESPQAP7BB7HnE02nAC0iyJOPAMXjDJWNyJmvyJnNyJ3OyM%2FCFJ4vyKJPyLTgDKaNyKmcyE%2BiCKrvyKGdDLLzyLHcyMBQDLeMyJp8DGEhCLvtyLGSDL%2BOyM9iCMNPyOezBHpyDMc%2ByLZwyM7tyLEPzK0sCGCzzNKeyU2CzKgPzNqMyYHAJAWzBFDhAEezDIcSe0zkyHGIgnf%2B58yXYAi%2FYwjzTcz3b8z3jcz7f8y3Egj778z8DtC0IREATdEHbghFkAjAY9ELrcz8z9EPbcyw4NERDNDFkgSQQA0VT9ERrNEPzAkd3dEETAx3QQUaH9EIP9EmjtEobNDFIQhaYNEsHtETLdEGDdE3nMzA0xKk4QDqwwgvoA0cQQT%2BEQQrImxqHARvbsRuXjjeg01Ln6bukWavW8QQrSOk27ulib%2FACjMxB9WtMdXdkDpSFwDBwxAvgwyFIIKapAT%2F8wFoDABu4dXQyMdw6MR9%2Froda9YFgte9qdQxzdVT68Rzvtc6GcyjwAyuIAzzwIh%2FwAy7QAy58iWPjwj24ggD%2Fb%2BnyMmrz8tDzumvuguVXV%2BXRvkZfW%2B9fY3Fgz7Boq0ZY9yRpq8bgOAAbwJkSE0AYhEIg2AcBjEFu28cSlxNnZ5Fn%2B%2BbQAicL323YSunYFuUTu9ZgO2xhT9rUJqZm%2B6pw25F1Z1n0KhRyL65ynylz16VzL9EW%2B1UKg8bxfkbyHunbcm4cq3aH2ihrqy1sq4ZpvzBq73F82yp9o4Zrj%2Fa%2Bwm4bz2nK1unK%2Bhh3b5d35xoeQ4ceNzdeW495Ey8gUyJ1pxKBj6qBlyqCb7dxw6d%2Fn4Z6fwZ%2BW7F%2BRzh%2F97GIjwaAN6d9%2FyRiZrh2%2FyeHA%2ByjkjeQ6fWCku4bL%2FfM7m38%2Fwrv%2FFIx4A44jRc4dk8ScbsniI8pi4sGiXuGiecxio%2B3hE8UdI%2BkhecihhuThlOrkr8Sk4epk2srlIeGlHcGlT%2B4lTdmjqMRhaMZepMIjF%2BljH85km%2B4mDMTmc8tvez4nzYwwjZxRc6mBPO4uX4vmPurjdOuh7MtCf6LOnwgkkfxWE1xa4L3pYo3eFR6aHDbbaBvZcl5QnK5Nnr5OOl5mBc60K56Z6hDOCzCEwyBEAzBEfwBNvDCT5ZBEARBKdD4pfNVphPIF36gvrnDq0%2B5j4c3kAPHFfg6sINGqIOGQaqwnI8gRP4VpSf7awu4kYpqsofDuKNDPEQXgI57ODw6jv9%2FzDPkAALAe7wjwAnoQVeqAAIYwCIstbBXFrH3DjYgQRIIfBJAQR78wSJgg4izeXNA%2BGvce75XJrVnyKiTl5YjrzpsQhcMfBcA%2B7OZlTtMgsDHAaSq%2BYnguarTEDoQQhCoQMvngB0k%2FGfkmDssQstDwYtK%2FGeYrzo8wwzIuwdIgLwvgrO3ALxPwr7TeWesMJp7hjoIQ9DLe7ybwCY4O3AsPHA0vGsUPQIc%2FbQ%2FizpAJNg35MV3xpCAvbJzyBbHOhREPbxXwTP4mVnFgx0YgAEEQbyWPHtndhR1wxG0PQK0wCYI4swTArznAM6T72nsvBDEexKkwjPUQhx4ALyLgDD%2BbEbHJXuyM8fWd33H6RtnIHtwaL5IqYO5U%2Fo1bIfn64jqHzfTw%2FozWMDfw7sFCD6AXP1vZL1qcH7Etwalo4MwwH23w%2Fp1CEM4JPvZc8bZg%2F0zhMNmUDrPBz86SMfzP4MwdIPvDzk%2FhUMS%2FLy8B4FoyL0dwPsR4L2dP%2BfJ%2B1OvqkM3BEG8W4AOTD68e4Dld4Y3AIPYXyXyckjhI8DhrzdAoBM4EFi2gQLVHVQ4MOFChw8FRjHWEGLFh%2Bo8IdBYxZ07dermTZKgsUy8bnHI5AnGJYcbYTM0TvJIiEyZMsK6uSHTB92iKjrIlKLorlacJDnIVLr28Q8ZMpMaqqP5lKL%2BRavo3IHR5O5q16vqnlkgWcqToSojEajoRlFdvI%2FxuDKM51Zdx7h1PcJFlw2YV78W4wECFO9v1xYx4x4s6C5YmRkWRATpEy5qODs5LLQgUytIjip1L%2BcwBGVDi0Um4%2BTw4CHIInTlbqmzrNrCiSCGPha%2B6k4TmMSF49nRiGCIJ2ybcgwndBeuu2vXfqPD27aqu7l1684TjuBIYuvTFcam6%2FZgW712yetG2MwBAPfv4ceXP58%2BgATNqqp3tx1BFWFgy9DIgCvicoccW7oJp6OoFqwrHAU%2F4mqtAgnRKIeoCEtwQYGAIWdBjyZkqMEMO1IvoolMfCieODSyIJjqjrD%2BUB1pLDAgs%2BFKgQmBSezpQ8Au1BEGAQNOiNEAjRbIgyt3FhFrOAagCCceKAwwYIaEwNpgSEOiSzGrrVIsDCwnDbGno3kMGW6RAmux44gj3JhEOumEcSPOVKo4whDKwvEpiDJc4ytM3QIbbFCHDtuxyw47EWG44Y6gTLYYBbRSASvbquJIJw34A50gHtUoiXJ4QYfSUMnI71CseuuyK3W6OUFU7OKRxlEJuljSlz6SCKIJMUrxTpg%2FnjjCDlkS%2B8POVf7485k8NOpOOnUmcSOILgjpJjF1eClqCDg9yU2dWuzc06wk8nhGVa%2FUYa%2B%2Bd%2BGd7751%2FYJVBVE9ks4dIRD%2BMOEzrDyRggURWjBWUlne7KOWKlqYgYwE%2B8ghskUScqdCBC7EqpYuJIYhiTKw%2BYgWJI5wQhg7dIjMU%2BlqeTOPbsiY4YQnoDJRInpNdCcJGRWKxw2NTggHGw9CncGcRDfxxMlI3RHGSQREmAGtE9ZyWiMRYFBAozjmKUUjCWqpaxGg11oVK61cNXuhMTVaDiF0EuVIujKejlZddyapcgZHEbAAG2l0CPUIZohRu6tCCTMcbsQWIoYWWfvOczgo2vpjuB04Hu7CeK4YboMTPOjGx8ihcBIPYrxGwIM%2BfBouFZxzblW%2FSXD0jhBCagkHq0m0fFSCP5Y0hOjhJHCjoRb%2BjkzUAEIs5y5fKIr2hKuEvKgbgSsmXOTIDUAdTgSh1Gu3vXjJh3feMDEaTiaGgimlbLzRejQIBTfRyIMNjtQoiCCqHI5Li2WkjlXw7VE5wIY7KqG1tAxpOGXoSP0Q0ALk5Q8BwFPPzQynjsAhAAqJGwiTvlaLbgxPBZ2YBMUSVYbeReojVsPYM9yRJgQoIBXzIINGhqAtkUAtZBuMA1yeoJEuePBQX0qb4hASlrZ5B3oImAFWRtc3AuagG%2FGA4HAMwJHuSaAFThJCX5BYEcQhMVHrU8gyxGA%2FT8zDHSzSSCfckRzuoGMe6JDj5jqHgA2kohulCMe9EFAme9DOicD%2BuJgKPEFHO8RhEt1AIm98ox8ZUq06%2BQLL8Ag2PKoRxUkiUIEC14QOHRHvWdHqSIA0ogJM3g2VeuSbASgHwuGcAHIISALsKiK%2B8u2SPufzEgQ3oK7yiGtoGqGBE7qHgFpYkXi9UiACTpCE3umgLRe7kDlmkDwnCAEtp6kEA4bTAifwzQLCYOZwgpAEJz3xgihSmwY10kGFAFCPOBleHMzElcMoAC0woAydnHQadRRTAatQh47iIA1hPENHpbDHdi7UjVsFS21GDONFlIgAtwmEcxq50jOGlwSc%2FAEtebDHFWeQijysghL2E4on%2BFaJI4ZxjIorY5eIwQKS1PEjPkT%2FB9%2FgiI54NA%2BPGnGCW%2BKRipEoIA%2BLWIQhtJQBW6TiUTMjxDPmgUv9yI5QqMzYRTbRAg%2FMQFu0qIAeYbgzBARBGuoYHTtHaYdN%2FHA7R4jHM3pHiIF2Lw%2FzqAVauvAMbPwsJvMYWzwdWQWyadUhuuTlY9%2Fjy5xtJ2j0AssVgrADYNgjHnKcxDyuWKZwQK4Fz7AHtHgYD2sOtAudMa09KPWHeHxTf%2BEYJFpScU4EkMEdPdJIMBm7EAy%2Bs3tfHYjPgCa04ZlxcY%2FaQNgAigCwfQSkM5QFNnonAe1KQIGEiIcwtCQBX2TEiYqz6EXXltGNClWxTsSb%2FWAIkvbewB1X%2FKx1%2FtoLhW48IxztjcNMkVhTw920cTTQCJcE4g4nbO2nGgFfDGXUUQQMESstxSIFESDTLoSqb10IIyQBDJF4tNe4DDHxfvsYhwxoJJGQW8R%2BhXGrF%2BnIrh0JTrRCArRnPKMbzQvCPNzYgmm5g1JQsMdhxduRTixWN46F7GMlqx%2FKlo0hbJnLMSpBiCr0rg8nTW5dKFUSdchCa8FUbQDjMY9u1GIRXTCBRrhgD9oG0i0EXcU5FVALj9SizMIszHDNhty%2B%2Fac83btSMRHwuoEk6lFCwJLVJPCiS1oXuzO0wKUtsIEKWOCHRNZIHlDpBiIWEW3oTa%2BT1ivhGQj6q%2B%2BFJjog%2FijeigVRuhuwNVquMGpTC1Uwuj4UgRWS0wMnTmcM5htF4yHDok6YMPX9mg50kAMd7C8HlYDLJKBAwAOHuDAg1k%2FzRNDWgzyIPGCJQxC0RMFJBAMtmbY1KN2hIy4k7sbcsYcbJWDrDayz2NejtxthIEu11AWClGyyu54MZfyEydnWZQs2aoEVOlXhzf3TyB%2B8DE3KeBoBdnALn9F6ZoxRtwuftPiE5QxOBGzCI3id4Z0hKIK1CLDPwVUIoFflDvIiwAkjat5u5yGN4SlaIIkyTe%2FWFCSxRJq6RCsoOgC5CGwIQxmVoAWPsXLYGdzLAtCtaKl3zRD1bmuDRvZqQ9yx%2F%2BRXQ1AF%2F3QHrRmw3e1SOOzH7TUZY8LZuczFHcTgFwez6g6Jtg0dkOuCmeJBqWVTWB3BEEs54fKMSdQCG7wQRioWIUJPxAFyR7C5V7ytG1lKYBWJiUcXWtAFoTyD0SpAwooR4IlaEE%2Fu2l0TQuld13trJO61D51az5B7jbRAHVpPcMGp%2FBcnJ7x8UW7yKtBiCA%2FGgwwLyEEewAJICwzBDjrCeME3TimPj6vPIs%2BYDo4kAR24YQhCTLl0%2F5Oll5%2BzsjRH6%2BcHgnOzJfMJ7jsZWjxAGNxB6DSC6JprEezhhiKIMiBN0qqLhuahiW7JHmTBA4okbOxFfvBvN8Cu7tgmkP%2ByCiQ8AS0IwR5kqO0SYh4I60rYzu1o7QqeIReEQRZqgRZsoe4OQsDUJlGw5Q980AcXgRj0AEnKoBZSof1CLo8koAxKob1GTsLoTpREZS0UkAZsIY8MqCOaKFfMi6vExOX87S2EgWgMIAnsgbBaYBPM4RpQQI%2BkAdEM4RmCoRZKoRawTkdCSah072JmQBiCQRhWQRaCQV3OLiHiYcE46Mg0AgaOj8nEBOGYr%2FkWblB0pLSQKhjIcAfeoXlYQKbsYYO%2B78s4bvxAzsysKR4I6XvUwR64wP1oSwLiz%2BUKiv5mbhVqTjf071Aab3iuJn7obEaGjiLK6Lv4hmsasOlmKLf%2FrmgHuACQVCBkhKqVAonb%2FuK8PDCj7EAOg4EQIEcEYOivhOgjBmhrMg4FoSiVTCscdKAFdgARqDHQ7s6mOExARMAWsuFUVO7TPGIM5%2FEJ84juZAmaWkCB4oAYlMZ%2BcgCQFKULI0k%2FWlGIcCIVYOBrKGEekJAM7MEeKAGcJCBY5KgL5sEeSuEEZqAKQgYP46Le7KoWOHITMpIMVCAH%2BkC39EodDCH6FBEBGBErkG8DpQMSIzFenE%2F0ZMiJFgHzGA0BNwwBdoAY6mGHKijjKmsUP678rGkemqft%2FIpvDu8VY1FLZrEn7Q%2B4cNGdMkgWRulRREAPsIRGjsQAT6BK1iQe%2F%2Fog%2FYRBSDTCF6irRhKtLgiLgfpFFqJCqexH3AzHGsPuA%2BWOeNxROpywYZzkGc%2FJHMGCbzQjmWQKBzkqHgesH9PCFryhG6DAFz1ASTgqFeQIY5Zyc9orCtXBDsSif5aQVPBmePrHAoznkbxQTLohNSXgBPIRCqxDATfADeKAgHikKIWADGTFAHLAHKQQAfJQJT2CUjagC5JgJJaHK7pHAWZAajTiBqrosHay4QzuEccnKIVyEtFHGn3xMyBMI3bACZ6my8APzDSCFK3SQuIhdZyoCnixKznyK%2BdPLG3x%2FsrSJ3ejGwgBCqBt2vLgGEpFILrBDuzEz9ChD%2BwEA0%2FCTv88oUPdABor9EIrhhKe4EG9gBZ%2B46CM6h39AjF3LUh8US0RIXHAIpmGwwRYDm%2BqRAT%2BqcI4ZTjwYBk0czMNRXFSYROUdEmXtBTs8SNSwULd4A9gCCFk4RmEwRM8YRN6wqM%2BohaU1OsSrE3sxA2CBTawYljK9A8E8MN28ws3SHBmrhZs0wAUYMUMwOPQoYkAUwT0DG7kMiXjoEqCYB%2BVJ3%2BAhE50KlRy4G60xwBUoBENIHR8cvnUsz6GssnUwQ2sRwKqQFLCoYmqRAJgwgCC4Jx8tC6EoEp%2BaMy%2B5hmGSm8%2BYimrRAECx0rQIYE0wgGdRBmvZuaoqm8w1C9y0Wym4yP%2F6gJNP%2Bg6DsI60sM8yGPvmpVZE8wj6uIanAEh3AG00IISXBT0OjAxu0EMvsApzJUMrmpFzWERguA7W6JKx8Up4kB3PghPvnMGaGYcwEgzddBY7eJf7aIgEGLv8iXBhMACPOAIpMEe1KG95AY8FAJayUNZ64JgFXQ33lRMwoEQhuBej8A1ogJhvvMIGqESnKIme6Jdv7MM%2FMwOnEIwEWITThZLnqEMcuA7dQBlpcMW8EBlc8AOyiZeycAOECIY5JVe0fNS1%2FNiF4Io4qAKrqAKyuB1KiMPpKAJphYbnEpOnmFrEcITnIpDnWoRGNCpuPQjzKIKuqAT%2BsSpusEWEMFt%2FwWibaUOLLYWOgdqbJH2L4oVvZS1SIshW8clCbZs%2BH70MMO17niBHfbOYh3CWiPEyvQiYiG3IwSlSPs17AS2ItzBDfLnBJxglPLQL%2F4WB0MvRbADWesiYpHVOaAjPbBCdQsWK6h1YCdXX2RXIRZXdiV3W%2FjORCxVaeUjU4HXWWtXW8mBGOjCLvSlRLR1dpm3eb2DYLGiRDrEeavVkqJXem3GLOuudHEwcKUjGC5FTb4VXMGkSG%2BhHIp0L%2FYVBzN31zYXIgYqNSnICdQDfMPudHHQGbK1fde3SINXeOGDeNHLG26wfedXM%2Fv2ovQ37MQXVvYmanDjomA07AK4SC%2BXX%2F85EwcX%2BCL6BAre5AiqgBLmpDAe2NT4t%2B78t33RIYNxcIAJ2D0M%2BKIQ2IU%2FuO4aOIxS2NTEl0K7wZHO90UTF4PZV4Pft%2B7i19RyuLEAFntR%2BBbad4XDroUB%2BIhjGChnuIDZEwdvWIENon13GIl6GL1%2BeFqYtisueNdgGAc3GH47uO6a2NTK2E0bUjOtWH2x2AO1eItpuIvr7ouLdI5NbYwVp47D6IxNt4jZeI%2Fr7o2VOI41N4w1E5EZcojDJI81s40Ts4%2F9uIbDSJA1k5DRy5ANx5IVR5Hrbo1NjZPDDpLDbonRi5R5WIqLlIp3TZNx0JVNTYZnGJSRSJQ9mJIZ2Hv%2Fww6VDUeV95eRW9mRXzmJY1mS5ZeYv9eWNROXTU2X646X0cuXH6sB3gWYFUeY5ZiaddiYdw2Z1UaZd42V0Yub0QuWd02WL4qWydiaTTdjc%2Fl%2F9ViAPfk9UoAVXAEXcKEIACCgCbqgAUADIEEcXMEGegmQw46cJ9mFTVlt1Nls2FmFmfmdnXnX5NnU6DmM7PmQ8XmV9Tmb%2BXmTP7qb%2F9k9poAfrGEYrEEJAGALZJqmbRoS8CEQxMEa0pOL01g3KHqaLRqd6fik626j0cudLwqeLyqk0WukkaikT1mp2zml0Uubjdifg1o%2BAkEeQgA%2BAmEdNOA9NEAeLuGm%2B8Ggh1ei%2F3etqJnYnMPuos0mo1eFqS24o5%2B6peMZmudZmue6ffF6ULB5q1d6l%2F06jLyZFehhGIYhDNzDsSFbsm2AH%2FgAAICAH9SAPpoBk1PEGwBbfr3hqEE7f7F6n6cYDEDhtNUDqsNIqi%2BKqhUHGEq7SAub4UDhjvs3sbd5il%2BaAHDBGviAFfhhCgiApvnAFfhBCS5bDgDgB%2FhhDgCgCA7hurHbFoBhu7m7u737u8E7vMHbFmJBvM37vNEbGGLhFtK7vd0bGIwgE4rhvelbvMu7vvHbu2PhvvM7v5chCyRhvvs7v2NBuwccv2%2BBvw%2F8vZeBDuhgGRa8vtc7wumbvCn8vYtBEv%2ByAMIvvL33u8PdW8FB3LxpIQHexQHaI61DAQBQHAA%2BQK2fO7r5AbpLoAhs3MaVgBayYcd5vMd9%2FMeBPMiB3BluQciN%2FMiRPBtuoRiSvMmdPBuY4BWefMqF3Bligcqx%2FMe3O8u5PBvGAcC9ocuzPBacQcyxvBjs0cynfBz2YA%2FGQc2n3BaYHM6d3Mrp3Mm9QcPf%2FM6TfMv5PMnJ%2FM%2BRvMTrowF%2BoARYfB1YgQAOPdFDIQXw4RAAQAn6YQrmgwA%2Bu31FG4dvu0glwrWj2IW5mqNb%2B4rbV7ZpSrBnma6Teop3G9QLY9Sb%2BZZfmgPkYRheIAw4O61xfQw4O7nFwQYuAR%2F%2FUkBe4NrU5HrVj3qo%2FyK3w0SvP4yvwwi2kQjVA0zV65nV%2FTa1m1qrL0rWPdqr32UL5AEf8OES2oPczR3dq3sd9AEfOtvYmf0vkj3blx23ud2MfbudpR2JqF1xrF1xaNtwrBqj892OYf0vwL2vxf1dQqAIIPo9Hj4G4EMDiuAFMPXYDziBB1nbSxmpt92Fof2R%2Bl1x%2Ft1wAt5wBl5tCv6uD143eZuF972RG96PhVrTOX6UPf6i7HpVnD1FRt68St5wTl5tUl5tVt5sWt7nX%2F6S23fhp32xkcibhVecDafeSXrnw6jnD%2BXnTSToETd9WfrUR3uqsT3rCbvpD9Pbwwjq%2Fv1d6hWH6pXW6tUG66ta65GI6wfF69UD7L9O7BWb7Ns36Vdl6bte7SuK7ZHI7U0e7jPopQmY7s3G7msb7xVH78OE73XD783GqaNe8DH37O8%2B7adY8RWH8Yne8d8J8qte420454f53isZ8dd55pt66NWm6M3m6OHxSHWe9G%2FZ9A0H9XNf9Y2V9efe9UMZ9stZ9nFQ8wuD83MO981G91eF91eF8A%2FF8Pee9nNO%2BNWG%2BKvf%2BFdF7i9V8leF8gne8g0H81ME%2Bv9C%2BkkN8LeZ%2FK%2B%2F7Gdb9Csf%2BK8Z%2FM0GIJw5Q0ewoMGDCBMqTHir3MKHECGqa%2BYAgMWLGDNq3MgRQIJm%2FuoiihxZ0JstkigjAsuWsqXCKMZCupyJrtwtmjiLDcTp0h0YTe54umwotGU2YEVTxgMEKF5SlCufkrQpdaQ7TWCCVo0ocKtIol4XTqzYsaxZjR9lhlVocu3DqG5fxoyLkCpdhDrvHvQJVK9BsH7RHQ1McGlTwujgBrYb%2BGpWxF0RA9Y79qzls2kRt0WsODBMtXoZB85LmK%2FWwJP1DiZs2CnhzqFvlsZ62m9kwqnpVr7Me2Nmwptfs0T8mbBov6Qb%2F6ytNzfd1YFbcx6%2BWHZj2pB34nYYeHfv7xZ%2FBw4eGLbe4tURo0vu17Rk7oGh%2B5UuHPHxu46Z372NGj5liuAF%2FiieX%2BT5Zd5d6Pl1313s6eXedojJpxd95VGnoHXtYUcYf34555Z3AfI2oF4F6nUgXQnGpl6D%2BC33XoRIscaUaxXah6GDGgbGYXP%2B3QViiJaNeFeJd50YV4p3LUgXi3Q92B%2BMiFFooIUqzvbYhto92R2AQIoIkmYnTaceknQpGReTcTnZYY93SXiXlCZSmeSN%2BOVoW5ZrEvZjl2UJSReRdBnpFplxmekWmm6pySOUMh5Wn3F0NmmnXjve5eFae%2FLJkZ9xARqXoGsR6pahayG6lqKWsvlcjNHNKCakiOWXnXqXhpWppmh9CVyYjxIm6lqkhmVqWKjSVWtYbtIFZ5Fy%2FpYZaZqT7ofnoluShWufuo7Ha43EzZUeYsN6VWxcx3qVbFzLBtpsoc8mGi1dlRqr6odcXtsRp2556haoYf0aVrBehbvVuG6Vu9W5bqX76bqjtnvqu3HFS%2B68mNZrr2%2FZErjtlGN6e%2BGK0zbpIoSEIbyWwvsyDKzDxELslsQFU2yrxRdnhO9a%2Bq7Fr1f%2BegXwVgJXRfBaBldlclgo66zyvyyL6%2FJaMBMts1e31nxzWDmHtfNWPW%2F1c1VBSzV0WEVLdbRXSWu9tM9ND%2Fx0WFGTPfVWVV98tVdZe7V1VV1X9bVUYT81tldlP3X2VmnrvbbXbQv9tldxEz53VXXbe%2FdW%2F3lvtbdUfUv191OBJzX4VoUndXhViWu%2BuN%2BNi%2F34VpGTPrlUlV97eVWZV7X5U50%2F9XlSoRc1elWlF3W6VKnrvrrnrQv%2BelWxEz%2F7U7XjertUuUu1e1K9J%2FV7UcELNbxUxQt1%2FFPJa7%2B8782L%2FrxU0ZM%2FfVLVa3r9U9k%2FtX1R3Rf1vVDh48n4nlI%2BnpwvKenT3%2Fq81z7hve8p8SPg%2FIpSPz7dLyn5S8r%2BhNI%2FofyPJwHEyQCTUkCcHLAoCdTgAv3XQPE9MCkRJOEEhVLBLl2wKBksygZ50kGefDAnIUvTyLQUH1bNx1W9%2BpiV9AOvIE5MTzSr2UVuKJQcCmWHOOkhTv5%2BSJMQ0mSERSkhTU4olBTqcIUebKEAX1iUGIZxhjypIZCoyBMr8gSLNNEiTbg4Ey%2FOBIxCEeNMyMgTM14RjT5UowjZKBQ3BhKOOJFjiOiIEzviBI8z0eNM%2BOgSP%2FZkiHkqmREnhERufes6V9KRE2MGRWtJESOUpIklaYJJl2jSJZxsiSdbAkieCNIlhMSJIe%2BIyC0q8ouM5IkjfQlJmlTuBXXgwwouooRAhMFa1dyCK2GZMRJtLE4dA82cQBYrUFKriFEqJcdgtcRZvahaZSkCPdYhD3m8AABh2Ic49HEJAuBTn%2Fz0Z67EOaRvMiuc7CTMLlPSS5z80iijfJM6wf6Z0Ayl8k60auZMqkaAYVjDAS%2FAhRIIIA5cOIAP%2FLABSU2KUhtgjKB%2FMqi6EHrK0aySWOZMFaNa5ShTKhGVTIzYTeXWyo6kAB%2BHsEERKvICfQQCAEXoxxZS4FSo9iMMGyFAM%2BKhjq569atgDatYxwpWd4yDGO4gq1rXulZ3EGMcaWWrXOfa1ShQg6t0zetY08oLvfpVrO64xjXi%2BtfC1gMMoMBrYQvLi3IQdrF5NStaIfvXegBCEPWgrF%2FdClfNRrYcvHisZ9kaD1CAIbOjnWtgB5tauvZVtK0VazymsU2M2AAf4hDHPYahARvwQw4A6AE%2F4OBb4P7gtwAIwQ%2BWu%2F%2FcIlgCFNCNrnSnS93qWre6mpDEdbfL3e6CQhLa9a54x%2BsDR4z3vNzNribQy97qgre98I0uKZgACFLEN76SWO992%2Fve%2FbKXFGAAg339i97%2BEni82T3weUmxhygMWMHeNTCE05vfCXvXEgXoiA30YY0QAGEfciguAIor4uMCVwmQSHGKDxHgFrv4xTCOsYxnDIYs0PjGOKaxjXPM4x6DwQdW8LGQdTzkIsM4Czs2spJ9wAQlOznJTh4ykqNsZB%2F4gMpFnjKWhQzlLeeYCVf2co%2B1LOYcd7nMM9ZChjnyAnxAAgAkvQRVnxrVMKRgH3ywKlY1EoCtuuPPgA60oAdN6EL%2BD%2FocaDW0ohfN6Lcy%2BtGQ%2FnM83GHXSUf60oZmR2gxzWlCC7bToAb0YUlRj1CHmhfsMDWox7EMVXfasph1NaeXAVdZX5odibY1pOth2lLrGtKf%2FjWkUS1sRsdDG7W9iAOs8dGjHsIB63AFAeSQUmizYtopfSmY1FPLltyyJblMyUJR0lCaPDQlwaTJMC9ZzD0e84%2FJxMkyHapRl9RtC%2FpMBzzuSe1h4OPaAKgDP%2FwdCoHarJsF5Xa78%2BixKil0qAPLqbx2esSerrOmOLoopSAuu6LGExKBuCectwAJOWjAIgQguck3hfCYKpymP7VpOftCMnQ2ikYXj3nGg%2Foyjkv%2Fz%2BOv5CZMOyXThcHc4TIvjcSfKMp0WpyiGK%2BTxqWVUaAHPTwtJ%2FrLuzX0lZFT6TQnol%2FSPZN103LhuHx3T%2BJNk3mbu94tkaSAsp6voqfs6OMEl88Ft3RWNv3mr4q6pKbexKrD8%2BpTpDvO7K40vDvr68o\
JeyhtzlOcQ13nUuc51PYuQatfPZYzmeVMup2Sb6ck3CgZN0nKPZNzo4TsLjH76NEObrXzku0zcXvr4Z4SuYMH9C4RvUtIjxLTowT1JFG9VfouNYqT8ukHrejO3Vnz%2FyRbisBvifBbQnySGH8qttcl54XHfKL%2BvfKBx%2FzgNQ%2B38b%2FR80HPfkq2n5Luj%2BT7%2FiNB%2FkiULxLWD4X36BZRyjJR0Sd40EJ4QmV4fuF73yF%2FKEF%2FUEF73tZwefdwM8d%2BkuN8EgV9MyV9mUd9YucjUfRKDkgSEEgS9icS%2BCcS%2BicS%2FBcR%2FtcSrkcSsNcSsjd8Enh84UduuOcSuvd%2F8EeCioc1jKc2jscukNce5ZeB51dxlleA6neAGAg77vdIQYh9Q4g3Rag4R9gwSeggS9hxTfh8T9iBBuguCNhzCmh9iJd4Xbd4W%2BcrFPh4eneB70R5Tph%2BSDd9WLKGInh9VpOFmLOFqtOFXleHYDeFPzeGG1iGRueB6weCk0cZwZAAbYh1b0iEcegZc4iEiBh5iig%2F%2Fxo4gBz4iGf4MGm4eX6oG5V4iR4hiLhDiMpjiEzzhS0ieec0dgKILgRohlGIhqEIQVXITHoSDIBoN7CIPbKoPrTINrYoMrioU4xIio54d5AohZKYi3%2FoiiU4Eic4EikYESsYES0YES8IETGYEjM4EjWoFL1oir%2BIisEIQ8NIb1cYiJmohZvoF%2BMIEeUIEef4EOmIEusoEu2IEjfIfTkIfrHSgy3xgzIIgCTBgL3RjSLxjSIRjhDRjw%2Fxjw8RkAsxkCRRkBFxkCSRkPW3kPm3g6vnkCkBkeookSNBkV6Sj4O4j%2BfRiV74iUoYjRM3jbxYitZ4ii2Tiu23inFBk5dhkf8RgZEqoZL3p5OHaIGJeIe66HTV2HjXCIzZKI0LOIJYaJOxiJMIIpW1yJNg6JNMh4dkqIcVaFHz2Eb1%2BHb3iIxiqYxkiSJm6YxoeYtxaYVAmTDvOJTxWJR%2FqUxzuXvFeIyWk4z4s4wK1IyM84xCpJZ%2Bx5aN6JZ0CFRd%2BZNfyZi245gYBJkqJJmsQ5mJEoaLiJnUqJmeyJl9aJXbeIlMCRFOCREa%2BRAcuRAeuRAgqRAiORIkCREmORIoGYE20pBGCTmJCYSH14a1%2BRC3%2BRZQqYJ7OZl9CY2HaY%2BBeTKDqZVE6TTLSYVISS%2BgaT2iiUOkeUamyTyoeSqqKYrdiTTfaYT%2FWymPnbmWbEib6VlF63lI7ck%2B74lTltl884k29cmF92mY%2BXmZ%2Bwmd%2FVlH%2F0lMAcpAAyou8dl5B4o4CVqICyqe29l2zRmRxWiJ%2FHmXj5mXR3Kdp5mdlRmiirmhqNOhs%2FihbjOe0DOiMVmXjYmio6mig8Ki7umiqVmg5seaQZmV9hmeNwqjPqijBCmTIqGUQRKhlTSh7FahLHShEWekTIikgimU4FmYINqgBrqArVgWBGADKoVyIfCmJUAWGvADKXAvVipLWHp2WppGXCo0GSpDo5ikrrmTsKlK5VkxxxgCuIAP%2BsAKFfED8oAP%2BMAPWwAAP5AO%2BkAPezZQ2zaoQeqj%2F3xKpPDppWIIpt4ppktKpk1qpkf6oBtxCfRQBGGAD5U6q3ygBnLwAh0lDj8QCvRQAtq2K0AaKkI6k2J1EB%2FUVX00EMqalk5KojKKPDTKjDbqODgKP1A6klIaEVXDAfLwZhoQAhUBCevwAsAKAM4GAErQD1MQrNoyrP1SrCLRDfRar%2FSKDpNGEP8TDvQaDj5YDP3ak8%2B6o9GKPtMamdXqOtcqjIc6M4B4W7gwDOvAB%2F40DPsQqaHgACWGXATQsR6rAcEAquaTp7OnHkwgrxABDkEgAifQsi1rAjRQBZ0QEt%2BjDlAgAiJgCKB6DXqAs0cgsvb2E0DrUN4QqG7BDkzBDv%2BeijUsOZNYMbRdVAyIAQ7DKRZgGVz4sA5TMAeUSgCHkFRy0A9ssLFzAABTwApom7a2wAu30LZu%2B7ZwG7dyO7dxGwuxQLd4m7d6ewt2u7d%2B67dsawSZwLZ%2Fi7e8YAsogACKu7iMqwe80LeF27a8sAMIYABiQLiFGwt6YAAGwAK8gLmRG7m8kAWSALqhe7p8e7eou7qQu7qnywt0QAem67p%2F27q0m7mqe7uFywuSkAWzq7t5a7vAu7ex8LvDK7e8UAkmuhFNdQkAAG2hgBHQ61t5BgT8oAZw5gDaq70gqw7l8L3gG77iO77kW77iKxgnYb7qu77riw62wBLsG7%2FyC77%2FJ%2Bu986u%2B6gAOLaC4FoCzOKsAiusBz2AT4etV5vtVQaC4eMAO49tVBezADsGzPmu%2FD0zB94u%2FQnvBGky%2Bt1C0G%2FzBDpEN6QvCG4y0gMDAJKzB7gu%2FKXy%2F6OANN9HCF6wOTyvDLlwMUmvD90sUOhy%2F6mCMHaEB0fa88AAJGhAI7aoB8nAJGkAPb7YF%2FaAEWXWnoUeyOLinD7G%2FCHAF5tCvhiABijsJ6iAbaSUNz4ANf3YQ6uAO2PAM4TAPCYwAfeAUf7bG6PAMz%2BBV7tANz9ANWuEMxWAO4eCv6LDGaRUUeGzHovOn71ewCHSwpZmwzrOw9NiwVHO1AHAI%2FHAIl8AP%2F0rQAOIgD2oQCvtQBAAQCvjAB9YgDifHqcK6tPEKtQihxV0wD12VVicQxmPcVYuQBB6wASLwBKVwGu5QC0kgAhswA4sQx30wD6sQBEEQB6kQBBvgAUkgDOFQBiewASqQBwRxDY0AzV2wxnkAzaUwCTlQzUcwzItMqqt5lYCXRHv4gbFZfbPJEQ5wCOkgDmNgES%2FACutgDZWaXJewDsPwAywny8FnxQqJxQtBy%2BowyN1ACGAsAb6gDn1VBYyruBLQByGhDqkgAotrAAgAxnJsD5uguBsgASStuC2QA5y7uHkQWJtrADOgDvFQBSSdA5W7uBsgDAqNDsH5FdtakrsYpv9KqqBMaq0DixIwGaU8%2BrwGZxEOMNXPGwB2GtTzx9Ap6dAKocXcrAIqINIl%2FQfuAFp%2FsLgtUAW5rLibEBQzwL9VUAUbsLh9gNKLawFQcAQA7NJVoMUtYA48q7g5gNNX4NNVIASLGwfPOtQRUbULUZwicZwoWJ3%2B2LT955JOna3CWdQPQaWYQcULDa88g7IQocUbrbgiMAlnbQttDQVv%2FAxxjQA54A6pYNKLMA%2FzsAkLoLh3ndKKawj24A48jQAm8Ax4jQAW8AzcoAeEbdj86wnz4A5xDAWNzciAaar0iapKrapMzapf6qqfJ9rax9XIyXVSocUncAQ74AEeYNIIkNv%2FlcC%2FtRAU8QDcy70ILl3IBDHbv63SeewOSaC4UMBVtQDGG8Dczk3b0I0AQWDfbkDg1%2B3O8qndCMrdHrrUCtvUJPHU2hrV6KnVD2jele3VCUHL9qAO0oANtTDbMFAO840AItANHy0MFlDSwqDfCHDTBEHdvp3cJxAOazzgCBAHBo7gCv7c8XDYCNAFThEPZSDh5Efh9vZVBVEuVl7IXhV3koWVsIydhYpRsqkbmNyjnSrPOSni6EDLTtFV89AHKo0NMe4B2FDjNy4BOa64PF7IzAzkNC7gimvk6nDgCJDgza3kTO7k%2BBrlCGDdU87hBuEO4bAKqVDpz5BW6HAs6vAM%2F5UO1OogDJ2Oop%2BeCp5QCV5OP1tOnTaS6vRsqGOelGUemmrujSQOjpa9kaadxYr7BcP9Z%2FPA6Bsg5329CbY8D2ld6N0wCQF86eqADR7w48B9An9O5IJO6Ia%2B4IW95Iqr6FAu5eKD3dy6CDPAAIvrAV1w6cfiDoaguGUQD9re5EltEPHQBdse79KK4QQxyISMEJteC7UgDLg5HGs86wpRDrbg77Ww79hIGWu8I6me5QkB8Y%2Ft2VZ7nvZjpYYMaBKfENO5EEZiyASPf1osBItgCIawCFxg0jkADrYw2y2wCcIwCWRd4M9Q1whQBd2ADfQO7Yor7UMe6Ede6EnO4O%2FO7f%2BM7ujfTuUzGeGpbdyp0FjouO4I0O5Fb%2B%2BFcQWcywVW%2F8gY%2Fukz0AIzkMcI0e03r3lRIel%2FUAsEXxe2INIMkAprjxCyohfCEAzB0CDdYPcAf8d2%2FwwL8Qx23w0f%2FpyIR0cqPgmIPwmUIAx47MfSWesZuS6fPgmLAPd8k%2BsP3fSMuwiaRgnwDd8iANTusPMyTtY8jwA%2BD%2BhFHvTXjuj1vujeLkDgHpJwrtJV4AazveO2AB%2B3DBrqzu7unuiKVRAQr8dlIAIecAa1MfAE0az3Hu%2BDDsB4TlBQzrlIrxAroQ6bENelEPcGYfA2b%2FmR2CSTIAHmLwbXEOmLYP45sOjmr%2FX%2BCSHg5p8H9g7ZER%2FrIV52hNDS%2FLsBFgAQKv64Q1fQoEFvtg4uZNjQ4cODwLI5dIfIAIIZEDU%2BjGJM3UaQBlUgIFmypAdC6srdUrdopMkcqT4WvFLSwIkjCAzksbeJpIhu6twdMWDATTx1tUhKeMZNz8UZ6uJVKdolHrp4ZYo6IRgSojswmrp61ajumQiSOYLFu9qFpAE97NAJ7VbKkzR1M90ZIlmGbU0EXdxJe9bNYLdnhQ8%2Fk4buWTBaCgsSrLUJm7twicORBRkPEKCrG5NKQGBB2MyD7txYsMBlbF7YBSV280Ay1diCsRfmNci7oe6C5Wy12LBhFWrYqHcD9%2Br%2BThMY3JzJuoNSEsQv1O4WkYSB1S2CKqEXugtC0o54jbfKSWd%2FUF0zBwDkz6df3%2F59%2FAASNFNONt4fkwJEwI7%2BEJKsPQQloggRklpAkCOPHmSok0kqtLDCTZ4haCV03OnGEDJCXCSc19SZJMQ4nhGmwtOewTC3VCr05aNuLDTHGVoq9GQuWSqs5aOkKjxOwsnCik5CdwBEQAJZQlMHGxVyIKOScj5y4wSSPEjCF4L26usvksgQRgQPZgjKHS466EAwdaRpwQMRnnGjAw%2FKIEgdT3IgTQQyzlCTkCMf9Aw0kEYr7bSGpAkmmGdy8zCVUmQh0R2JlEELgU3CMWeycIL%2BKQUv1MLpphsS0alFUtzykqaUYEpFRzhhFt1sLnWEKaWURlP1sJRaSCzwq%2BcCJXI3YSwwCZGxtCMpo3i%2BC485d5JgrQ%2F0aC2Ql%2FVy821Yh96LLz9ww7Vvv187I2QpKK64IgjSlsxlprzckTeh3ngTCkjf7u1N3gLj3XYyYryZi1%2BD3KFkhhmuUE4od8oFqSOH2ZN3YoobDu4WR9mKx%2BLxNI7XYoZfI3gyedEpxpmRGUZuZCLBEovbgqZalqFnpMIWneoCPOFHLxHwKx7AulCnBZI8weylFkjcDoEW1OGCJC423qTdktqlFmasPqu221pIM61Ad%2BwwwQQyGu6GCxX%2BFFiyhS6eWaYREdRGAM5NGv6jBWNFSGJI7UQQwQ5CZpBAghYM6codYaBAy4IW8phLuBlM2FmoTXTYgKQNZjAE3me4WFwFN8KJeLxgsXYoHjsCDCK7pZn97gp7upEFm22fqaUWbPY1VZaglLNF07xs99V09%2BAT93hxyW0vnnMR2KCbedhqHoE%2FrvKwFkMMqeUYYgyyvRZ0hFmkV2FqmRGdUrSnVXxKNEztmVIISaUb8cLxpRJaPPTEkBln6uZ2YRQsHKsghCc0NDqHQIx4GuHQAjVyMgd%2BxUhYc4cTSCKY3RTkFuzgy5LKYIjyIOAIUungz4JmjzKQxA32KAUDllL%2Fi3kA5gz2%2BI5V0BFCD%2FThDzkoydVgNqit%2FaZrhypQVooChaskQUAGOEIxGnERmywChQKygEx6hhYoImABk2hYMIgWIMEI53IISEU8PGEsARnOLDMQ0BNEFxLnQCeCuQkHG0VIGgn8aDKt8w5JqhCHtIkACrW40xVa0AJAzSUccZiBBRRggiPcZi7CYIEKoCCMJIiAASooQ1Ac6C3khRI%2FymMP8zBXs7nQhiR5QIohVNAuCXhADJNJggQs0IXaLMAQOojlJEIogScIowtoFMHmDOKG2jSIEDCSwAKS0IdLSaAKotPO4HIwmU7kQG4b6MIbOaPAOTKkgeFkCATJOZ4J%2FsIsHC%2Fxi0PUkxOf5cMe5sBSHudRQjAFxh6eIIkOwmaSzRGNAamg4QXnMUQESHEe0jABSXzILSAWaohfY0hWSAKFeZSiQZ6ohR3kVolVDKFdOjiCLFLRLij8AZ46wEoHEaACO7hhjM8KYQv6UIZ2TaIdtkhmKuaRszLUohQhXJ07AHOCPKyGJAOBY%2Bnm6A6fLEkWX2xnh%2FjYLJIYK4si4Fl5DHCeJ%2B1AQBLoQ8NqobYNeCCLBqiCsIgESlHGdT6klI4pnQe9eMxjakvtiYCWKi94mqQUbFSABLLovADlUSgpFJAdGpaKrArIDfLiozvOKKAkmAOBCwHnOS%2Fm2YWY%2FxO0HUont9QRwraOp2G8wAaWEACFMsT2JZOwBz6BZtBuLO4ZSpRbFYbougvaY2kn8ORQHBpEBEVUNBNF1EIs%2Blp7TIIkAglGSyaRClt4wxyXWkX0qnBRe9hjaLa5Z5aCMQ97AKYK8zip84SRj3ykDjw77Wk8dHBRSiDmD6wyy%2BUkkAr4ShcBq2uqHJ%2BaMyHMgwwkIe5HlIWRPi4rDl1o1wiNOyCkKHFJSSiDay2winggFAFXsIMdN4BK4sFVrnGlK2fsKoEyxGHCY1RALeLhhIsEYROb4CECkgDYkhwBCkdAhx0lEIdOaBgBIliEIZLZh4OikQydwOmh4gHZBi1iEv4vyYFQ%2BFhkkhxhE4QY4yLcmsAIjXacoxUtaF125rp%2BFyMLM8QipMHaSxWlKG8hRG2%2FdNvAbEzOeRhJEHg4AzeQ5AxsqaE9GISAG8wkHolGwEOHpdyyMLeIjMWoL6hGuC4YjRjZyC1JSkGQHg8hpiVepZ8R0GWsMDYH7hCwCGQcB8C0ABw8JS8ZsriBIOThGRvjp%2FPcIGMyoBXFGokjnCVklmRKEaFmturMsLrkZ8xjHvK1wFrgaYeDyo2V8XjGF50Q4naRIR72aG%2BNNysdFa84lC32z%2FT8SoaPrMgOz7CHOxh7BCC%2FOi%2BGsWMS0EuJkig0hDyJA0mCEF57yPkP7P5dik%2Ft0TwaeHlZliWJCcIR3g5CwdmcTTNo1wzaNnv2zRTMQ1aD0RWz7EkP4LhUErrAhS6EqAuLKK%2FP8mkVWi%2BLNHZIoQWwtACZXLsLws0S7ToET0sTCdMQMRRFnctppOQBjSYJQnZLjYBTf10ne9YJ7DoI6werQB1KGvueDbABbPCajO54RghN0gEoF7vtUGTKZps9x%2F9gThjmqCNJhODgqzrrKv0t2jy%2BbQ8lqeCN8ehDg9Dh6SWdmvGKXWC85X08envFrgLygBt481g7DOEEcgP4hY8yFzBTb2MClkB1T%2BtQewiBwVDgvR27QPG5nensGsdIzzzAeyiEUPLfLP%2B5Z9XBC4%2B5R2NIMV3Kz7lymKkD8yKkXxJLogd19NgO8nRHHhaBKtsGDSliJ6PeEdBgpR%2B0XRM%2F6BijLqGpP6TqzT3Ic0WuDnuQkxwYI50QA3L4ulNbp2WpAt5TlyowhJ5DOwFrmg7aAOSrgiuoAjLYtZ6SClqDgrQpiRPTqNKAAgbEwCroAk%2FaiL%2Bbox6TgBM4ARVAI8V6MOAascVDQMczD3toOB87nKWRAGEQBq%2Bpmc3ToxQzns%2BbN%2F5YnuY5sj%2Fogz4wIJgTBh7aMzRqvW8TDzsys6BjGtG5vUqbh%2Ft6Cz3TiRy4sizBi57pMhvsmb3TiROYFa%2ForOubhCZwQC7%2FmoxJwMAMnIR3CwnrIyfsgxnVKIkZIIM4KMMBs4V2oDQLWIRn8EF7Sr8Lsh45e7%2FMIMDUUrqrKEMYswPXqjTkWh6tkagijJ7pcwf%2FC7FFsAOee4ZNCKEdOEDuih54IoN8iB5DmARfIJHh65AJNBEGA0B7qIVF%2BBTh6MBJQIROMhWtKxrMM43wEh8D2hSQaMHOKwWq8Su%2FsMEIu4IcvBRP2MEB6UGHk7Th6hSvOY0jDESy8LwlBJfQCwm7eh5V5JiCCKEcyANZoDQtNA8uJAkvnMAwDCEoC6EjyAM7sIM86APzcwcs8wA2HL437KATaEiHhEhDkA47JCcjeguuoCUo%2FzKAOChF9hjEcCpE01IHwBAQFRAGbCm3qimJsomHDlI3mQm0aiOJH1MHsSKJPYyHp0GAqFGHVNg6knAhUsSa%2FOMaPLqCEJlKMoBATqOhixCB%2BemGnGkCW1QhRBCG5tmARfiQpfAEV5NAy5OGZOIC2%2FmiJzgHuUuFcBCBouACbKgLY1GA2yjDIxCGZxCCi8gBOmQ2p1ogNFkKD1jMxUSjE5CGeEi8BukGVtyrPIqHx6M9GJKXnAkCd9C0d%2Bw8JZzH5GnCUhrLZeuNZ9hLXwivfwu48zCILpQXg8wLhLQHSksCiJMxSZTINRQKi2wdqFrD8JoENzAEWfDI5gNJSvuJ3v95hmQSSKxRyacqrexDhzi4lKXYEndQD3cIhh7LKnzrEERgjclyh2GyADuZJBGYFnmJA9ZogeIiA9b4AoLYJ8uxgL8pw%2FsTlFNcrm40CSaaoteaB2FIJgnYABqsBG9whyGwiUlAhy9yHrUxgCRoqWVxMAGTvCQpCQuApVJgh7mcBx90ng1olyQQCkqApa3bw2w8TNOBtjDpBmmQhm0oBj0oiT6TzIsqHzu6pgs7D2y4lBmYhFJYMJKAQNB8Bv9CwhgdTdKkR9OsK9Tsl9VUoWdYhEsJSAyTTYKkzQY5SIeaB1lol6BqHgMgBOCjSOBMC%2BKLinCAgTArBUowgSOCR3T%2F%2BMhwmrQAMZrhNInYdBSK%2BQ2KWRh3uIZrGNTrs04KwoYL%2BZGPUA%2FYKwUL4T%2FEUAx0uFTD8J7E2NRLdbqCQIzIaBPkTAVG6YbcWyWUrKv%2FzLQTHRxYhVUowM3BaSt3KIXw%2FIlFWIZsqKaSmLhaeNCqqQLa2YvB0QENHZwZ2Iwkic6X4iLhOIHBkSRkCpAhQKW%2BMQkPYKoCGzmJcanbgI1rKIYfBcdry6p22SJ5EdbzgMMAgYK8WNK9dFKskccoHZcpdbE%2FuIi%2BcwhGJMAlox%2FdM0nx%2BKKCnC4x3YmN6YLD8skOwbINqMgMfbDuoLUARQATSM2HWc49bU6B5FNADQ3E%2F7GDJLA5T9iWvEiFMyjZMlgFkEmFP8ADSpiEJ6gCQFzUl%2FmkQjUISRVUfdQWeGEO4EgO91CHbCAGuhujJzAMT7gUSvBWe2xVjQiHWFkUq7XamlEURpkM9MmeXtQQBUHK7JmERsmLTvBamfCfRQmgUF3bgsnSsb2MV7GFqp0Vumuy7EkF2JsMF8me3pwOGK1X3RuwhXCGa0idwooRa0NSMpjQDTCcp1NVq5rQ0uimeCWNDXBH6FwSes0%2BKL3X%2B6jHbFwEyYEBjc0NX7A7gcgBGSyFqRgbbkUHIRgbLoKqsQmCMISCsVGjRWqorFLBeI1BM%2FGysUlRWhsbIhPGFpAbCf%2FQAZdVTjzFP0qTVhGyzSVxrUCVqQB5AlRSh27IxKUog7kISQ8gDQOANUJk1HPq2dHKBmCYCyUTgRBcMrxwSqkti%2BTIX3z5l5CxGAUZGJbZ2XrhX%2F4V4JUQWgF2jwTu1gi6nVpITWdwhv%2B5HWmY4GCYi%2B8RFUP4gz8QhrEonwfWixrhYEPw4JkIh0q4nVkJBwcuzHr9XNCtD9EFCVEZFapDh1VIhflxh2ywBVJBhxouzBrGxkz94YII4twgNx02VX3sBltgBoMwh1GZFSk24g4JhyUGn%2BjNU44FPEobAqI5MWyojRYIoXaVryWJTtzNiyuAIgsgQMEAWZtgJZyFWpj%2FYV%2FQct%2B5wAa7g6IW2IQthoinJKf%2FVTOMGa0OCdx6ZQ50iGBr2V%2BgjZeNWRgEZoufRQdeIOBALhQYjuG5yld4%2B5duiQ1vIAbk6BdKpuTlYGR1GLWifeWiZWSy0FMvvqic2QQBqwILGhADRaMkqIVuYCwEyIN50LsuAMyc%2Ba95aM4g8AQ7qK46RmR0wGPP0mNF8oQ4cANtngTKJJ5BDqdCNrlDHi1tBC1HlmZqJid79WT9AOVzohdpDmfQouUIAtkqUJJsJglC2GU7gLyfuAypeIJ%2BUjA35Q07KgPcFLxJVjn1Jad0JidrHphV3GRBvt9zkudzOrnrU2RyOmdEfug5%2F1pnT57hCIJnRMboc6JnBwJZKJCFBUAAHeChPNKwfpYvgIuZDpqBCvqSmMnNhH4pb2LonB0tkJ6jiAatb54jlA4njSZEjg4njybqbAEtkY5hknYgkx6tpQ4nlV4gkHUCdMASBVAbFUAHmrYHmwbCjQOq0ABZ3ZzeFRRqO%2BaWoo6go%2FaspI6grY6gpl7Jp56jqAatuhbNb2FnGXZncspq0NrrCOpqb%2FZpJUMAJzDHfm45CPuIZV6WnTwCkRXWWaW0jEBklvSswV6guz6nvHYgxl6gvn6qv46gwCbtqXa%2BTmbnq14gxfas1V4gxzYdt7YHy%2Barb5uHVRA3oViFZEJoJf%2BJRNpsF0P4aSQS7YYOp9ImntMGSYsm5IlA5NaOoHL2rNhe39k%2Bp6oG3dsmnty%2B6O1G5N52ytzMqJIYKMyUzsHFiCAYoxPI2i9iAB3gpbQIB5ae65aZ7jmqbtO57j3NbnBeb3GW5u8%2Bp%2FB26PFW59oeacQOp%2FTWbmnmYoquK61gonj4ujmMhyAoipP0XrsTwbrpkFWg3GX5ESOyUAFHEgKPIAPHGgQHPAVXagb3rO52oAfvaGfY8Bs3rQq36gufowxf8A1vb0NsBCSAgj7ICzvgvTzIizzgvT1Uh3D4gyBQARVIxFx4DWywgxwAc0QrrkWoAiTAgxl%2FkNEWb2nO8Xr%2F3nG97vGMHmc3e20HinDqnvBwKu97PW%2FTWXIeb%2FIuDmno0wtLngy2WBkuZ9b%2BEAog3gzqcxREdfAad6Ai5xY6X2k7V208J6cfR0w%2BXyA%2FL3BAD%2BkjN%2B8kL%2BkD0epRJycnh5lSXyDq9O5NX6BOH5ZP9%2BpQX6DdNp1bN50gh%2BohR%2BdVjyCRdoAfePZnTwH5eIEt%2BAH6oHZrH6VXx%2BpYX%2BxZ5%2BpE52s9R7lkJ%2BddJ55eJ5Jf9%2BZgJ55hx5pip6BTJ55Ut%2FFl%2F6QK%2FwF%2F4Ad%2BwId%2BOAQAUIJ7uAd9CAT5mIKBL3ht73D2MPQ7R3SG54x4n85yd7NzN510l5B19%2B12N513%2F7f1cd9oAxuteuf0eyfs%2FNAAJVCCIggFerABArAGawiBQ9CHF4j5mYcEfHiB0N123O523f72Oap1bpl4mMl1IL94rMn4B9l4%2ByWUkxZ6BzL6YTl2wK54wT75JCzs%2FAgBeJADAEgBfAD4IuiHLQgBfDB4JTD7%2ByCAZnjzB%2FGG941ngZHmjoD79qD6YSl54gELUMD79mB6BHH6H%2Bp4rPn4og95QgSFkTdnrCdtB291ALgEcYiPHuCHOQCAy1cDG%2BAHsP8BzweAF5gC0if9LaCFCE591V991m9913f9YoiF15992q99Z4iFk7F93d99JniFbNh94Kd92Q9%2B4m99W7CF4v9P%2FtTPhiyQhN9X%2FuQffugv%2FmLghekv%2FmygAzp4%2FusHfl7I%2Fe4HfukPf9vPBknIAu4n%2F9o%2FfvXf%2FfFv%2F9fPBlpIgHARezWQD9AH%2B86Xg%2F0HgPwHCAA%2F%2BBAkGKgYsmIKFzJs6PAhRIfAYkWsaPFisVi2MHLsWMxIJo8iK1IcabIhr1snVxZblkXSMpYnYwGTadJWSZsel9GhE1OnR41APU4c2nGZpCw%2FjV7kxYspx5xQIyKjlQAA1qxaAajBlwJrDH58BPIL80IsgCL8xmzN2swdurhy59Kta%2FduXW%2FA8PLt6xcdMG9%2FBxNGF8UY3MKK795a7LiuM2ePJ6NzBwZUYsr%2Bi2%2BV0%2Bw4217PiuMBAhRPtOLAqAuXa7x6sDtQYDK%2F7hu59mDXuPm6a%2Bag7VZW1ghg1QAvFIAw%2FX44kIdcORDgCZqp293Xmy3rfYFl0873cHXvdVuLv1tMcnm6ljXRTo%2BOs%2Fu5oOPLJW2aflzu%2BNGRx%2B9O02z73bYffPSp4xtwWTmwDnJZHbLPJesM89sh%2BlwCz4TSUbcfdvsB1t1%2B4OHXH37n7bdee%2BkVSN98%2BNl3Gn76jahbfP8FiN%2BA%2BK3o3oG%2FJQiAA5BsoZUDfAxzyVdAGolkgtOFR1%2BH%2B8mIn4j0kUifif6BwR6BneHXIn0vSgmilTS6Z2OK5eVI347p9fj%2BI5xxavhkfFHGSCZ9VcZ3ZXxZ0odil%2FuBGZ%2BYd%2B7HZ3poCoiejl7G96ackcbpJIfZjemhnu4hmp6fNW6Zpnhtpjeoe4XSN%2BWeZiYKIKjerRmfqOJBKimtbVGKn52n4hlfpultWl6nZ34a6JehhVkajLoeqmp5iuLIKJuO8ohgrdVmdSuUlhoaojF0%2BsossNAKy2WjghpLKLKXzngiq4t6GKt3s1pbK7Z1aqsst96W96t4wSY6bLnF7mdqfKhqCq53ztL3qnvwaifvvJLW616uBe%2FqXq%2F7Iuydv80CHK25A6e7bZns3riwuA1L6ya1EdM6cXoVu2cwxt2uu1%2FH4gH%2FGjCL55Y6Mr4l%2B9fus%2B%2BuXB7ELk%2B6Ia73WoypzUKXmLLH5IIssItAP33zn0SjbDR%2BSSv9I8zlyZwezellLB6%2FHFOt88ewHl0eqekRPPPFGpvcqnYMqzh3vC2PvbS%2BZjuNN9SFe9e2djknHLfKIWd9H8mp7u0usY8KPjjZTGfrYdrlrb34xo2%2F%2FbjVckt%2BLOVBWz70yfH5XZ7D1onN%2BVZli3d2eaGLN7p2jFvnuHY7X92zyK1vLXWNXst%2Bune173Y77td6bi%2FoeYse9etTnwj536ujqzziXDcfu3uzhwr4w5tXn%2Fv1FB%2BOtva%2Fc3%2Bwh8RbZ7zqWLOe7PK6dz6%2BWUd9%2FtFjn%2B3c9z7rKc47vBOP77wDPOsIbzf62w3%2FIue%2F8QGwfMw7k%2FPSBz3tSA831Huf7hw4v97VT4L3%2B1b%2BRohB8NEOgdapW3nuRr9lXa5omZuWjxZoq%2FjFbIUQbKF2JribCuLmgrjJYPg2%2BDPy7dB8IERfegxIQhuaUIFCTKF2HuidCCbxhXrDmQyfSMP1iW%2BKHaziB1eFRTWlETclrM0JqwdG64hRO2S0jhJxw8TaOLE2UKxhG%2B2mNQ8K8IoE3I0WrXPH1%2BQRd3vcTR%2Bt88fdBLI2g3xNIV9zSDZKUZFUZCEPYfdI3ERyN5NcTSU5d0ncZHI3m8RNJ1%2FzydWEcjWj%2FjxgInO4SDg2Uo6rrE0r7chFPHpxgbOsTS1xc8va5HI1u0RNL1Hzyy0GUzw6RKUVjYk5ngFRiHOqVPYSF05O1VGUawRmKYV5yiOmsmtzFE8ya%2FNK1MRycM98TTRrM83XVBM11xRNNkWzTUkuszY49OYwwRnHZoUwi%2B18zT5F08%2Bx%2FXM1AX3NQFdTUNEc1DMJ9cxCXdnQ1zzUO9%2Bk5zp1VlE6gs1AzUQhEQ2XznzFtF8X1eY7uRlPiM5zjEhcYukwOFN8%2FhQ1GfXMRpXWUdR8dDUhRc1IPVNSzZxUMylVZjddGlGYTlSm93RVU0XzVM1E1WVTFU1VUXNV0WRVM1ul%2F0xXKfNVfa50NS3VzkuNWs8BjvN45TQn%2FBoYRiMKlqdl9en3UqdB5E3ujRItJkXP2re0ematlGlrxN7qmbiKZq6eqStl7jqZvE5mrxjtK2r%2Bap3A%2BvGogkzqE5eK1ppqLoiIxYpoNUNaz5hWM6idjGofw9rHuHY1nqWMbHdDW03a1pO4NaRuN8vbw%2F4WuDndHWNrq87Hui2yx3xtWAE71saSd3%2FZLSBnNfPcx4B2XsGlzHA1U1zKHPcxyXXMch3TXKfCVjTRxc10bVldXV5XlO%2BFZHwpM1%2FH1Nda951Mfimz38n01zH%2FXUyAFzNgtRbYMweuTYKluWBrNtiXD2ZlhP4nM%2BHFVLhaF35Mhiez4cd0eDEfVkyIFTPizpZYMyd%2BTYoFumKDtlibL0ZmjB8zY8VQLwWXuPKVh5QCSFw5FD8AUiCOlKQhKpaP4aXueDEbLvP%2B0D1HXk2SQbpkkjZZoU9%2BTT7Ra1PfbsUG4vjzOv4xlin0Ix3iWIcSAFChCGWIzOhUF5XMyLY6IzTKIg4qQ9M72%2FWKt6fFu%2FNq8uzcIk%2FmhAQggANYkSE%2ByCMExAGABpyTnH4UATgE%2BK4KdxrpMt82hmwmp5t9ZkrLklXNCQM1akRN4LDdFCtT0MeXARAK57Ai0TZAi1rSACQNcJvbJWjGPNwh7nGTu9zmPje6zf7tDV6ku93ufrc7iOENeNO73u5gAjXiYe99o1sdvFAHvwNe7mVEQ%2BAGd0c9wCAKfR884LwoR8MDzg1iRJzf9ShNPSq%2Bb2JwQ%2BP2Lge7yw1wj587HqIAQ8ZJDu9rXMPjI3%2B3v1%2B%2Bb5nbex7NJoA1GoTzdEBiGPoowrXlQBahT4EVRj%2B6OVrxiVGM4hNOf%2FonVHGKpbei6U5XRSumDnWot0IVXof6Kbw%2BC1pInelWP8UpRuF1prci62k3%2Byfargq1Nx3rbm97062uClrM4utPP4Xcrb71q6tdFVdvO%2BLRXnWnmz3sWtjE1AUP9a%2BPAu1PH0XXB%2F90rPud8VI%2FBS3ezv50xqfd61NPvNnr3vXCO73tis%2F60q9OC7Ib%2FvKAX7zmo856qiP%2B7mlfutlb0QZGKF3ym5%2F7JyzP%2BMznnvOdVzvaQz%2F30S%2B99Gu3u%2BibDvi5h731d8%2B83sfe%2Berjnfpb97rfMd97xf8%2B9a0YxCCKr%2Fm1Jx%2F5S8e68Tff9eejfe99F331Md31uV7qJR%2FedV%2FUud3tUV%2Fl0R7UVR4BNh%2F6ed76bV%2FeBd8gaIH8DR7dUZ3VqR3uceD%2B1V71hR0lUELZUd%2FbDaDbwZ36CeDhfR%2FcJZ%2F0bd3t%2FZ7mFR7ygWDvQeAHsl2zqUWiYUUIaAAAlAA9XELQDR1waAArdNeP2AAkQP5hghxCtFHhVoSCEWIhkTwhF2qFGoTBF2qFFY5hVmihGQrEIaRhcohhGpahGYZAg5ihDYxFGm7BkKQhK%2FAZFrLCFv7IIcDDFhJAChjhgoRCCuBDIACAEvRDHm5FqrGhFLIhJFzhGKKhGUZiGoYhG8KhGWLiGP7AGqZhGLihGXriF8ohG4oiG4aBGrDhHurhH9raMOBCVoSAPLBCCEwBP8gBzlnDlnlFE3ohHU5hGlYiG4LiF2qiGXLiG1riF4ZCCKQhK5KiKY4hKnKhKlLjKJphKaYhAcSiGfohnDSHMWJFV8gDPsSiEtADPuiDHbaFE0riOY4hMqahMnIhM46hM%2F%2BeIjRyoTRyYyte4xdmIxZuoxlWozcSJBaGIx9SITn%2BCAHYwJhhxQtsQRG8GgCkwBb8Y1bMYxpO4jF6JBXmIxbu4xf2IzaSJBQGZEJ24xh%2B4zOmIUKGIkx%2BoUyOoUPKIhZqACxI4iVQIkt2V0SOoQbY4ia%2B4kjC4jSaYRHUY0oqpRne4xiGADGGIlRyoRpI5RcSAC48JBTCwix2lw2woQOUZRq%2BwFhyoQ1o5BiiZRw2JR2uJRa2ZRo6wAuwYQjI5Ri%2BAFh210Tq5RSs4lD%2BFly%2BpVv%2BlgbYAF8C5l7u5atpwA80JucwZlZM5GFiZmIOTgj0wKsRwF5qgKsR4Q98wPv%2FnKUNBNFEroBWTGRevk8K%2FEAJKMhjjiYAhMAP0KW1pEAPzGIJ5KZW%2FKZuRsxZviYRhqaPFKcQEcBkZkUKpKZW8OZfusxz3uJjJidFnmZtOid0cud0SooDbCeQPOYfvkB34o5mfmQPzKZ6ViTn4KZcimZoZoV5bmbEgGZt%2Bshi8qVkUma1NEBthsBv4GcRRmZzCtEPpIM%2ByANDmpMS3AM%2BvGOiFcE6LOgjco4S9CJWOEAovGMo%2FAaHeuh31ooD4MI6%2BMgWRGiEftkUyIM%2BIBruvIA1RKg15KUT6gM%2BXMJv3GiONgDnEEAgRCg9CB1XqOg95OUWuOg6RIfLAGmEikOt%2FyUHPeiDOERbGExpleLOD4hDhB4CcWgAl%2BIDPyxiCPgcPnjp%2B8iBP7ihHNwDlaKlHLyjONTA%2B4TAOgzHRq5DhGpoClgDjsbj4ByCiqbDb%2FDBOwIjVhiqPiCq0kCCiorDbzjqk%2F5GkOrDMLiny4QALkQoOfqZPtCDUnoqqFaPGqijPAymtEWopZ6ao%2BoDLpjm4BTBPkSoOo7FD1SoPOThrVqo0mQoreLDHDCiO0poWuDqhf7oMFQpK7QaFRoqH6iBHKTAL%2F6AiQ4niY4BPWhocpTFFvDDK4ZBWYArVyrNC%2BACP0AqVhyCPMgBtApoOgzDDyTriEbKpirBFOADcsgBP%2F9sgRo4IgDoK7%2F6a6z%2BAyTYQCjoQ15GiBywgRxwWy5u6TDYp6T8QD%2FwgZ8Nw206B8RmrJeJQ8RyDi6kQw8EQj8k2g%2FoAyRAa60JqhLwAT9EaWVmqxi%2BQI7e6hPS7CXY7PtcQj%2FgqRLowyGoQR182SXQQxEcAj8cZpMOgzVAqxpMJD8cQhEkIQBcm9RSbZNawzBA6xicmtZyLXOOaRHgQ1ZGzCXggxKk6JCY6A%2Bc7VewrdtyTg%2FsQ8EOQ8Q6gDjgArSKYYbOwbMt4uCkgByw66ZmZLL%2BwLJqAAEc7rL6p6QILuHiw5fVAT48a7ROa7XCpiICAKENYXeFAjA2ZViMxRb%2F0BrnbIGF4AORhsKJEoA4PCHrOgABpMNVugze2i26AgAuXGpT%2FgA%2FaBsbJO3gEEAY5KHW6q44AIk8BCUuiAOqLS%2FnvAAfTGPp1towsEIJbGEjDmYgIKzLSCZxMC3n9sNgCmoIbK%2BiCePgvEBeToE%2FJFoY4EMRJAnOYWwiAu7gNECy4oMYKketXYI8OEDpRgcAw%2BrgJKk44Gmc%2FkCSLMgThgWRjk2sHUIKQABW6GtZssI6EAAGA4AGz2uC4GIgpICPiDAJJ%2Bo%2B5KUr5K7SxFpQimZ43sMUFoEjaoAMp4XAjk2QknARbqTqnnD6TiPTSuy8aMA6jEUK6MMidm4JKPH4%2F3pupq7D6oauRe4D6Zpu9fguG6SFt0Kh6%2BKDOkICAdAw3%2FZDg1qLDdjAC%2BiD0C0unlqDNTjAELsxEdMKASiBA0TIb2CAnqqjlxLaYG6BP6Aq7qgFH9QvADRA3jrA8eItUqInLghirIFx5c5arfUrzEZMCgyDPNRa8H4ZBqcBP4DyKFcPHyQhcUACP6jjpRoHcsTaHI4NH4jDvYqhy8YAAHRvCvDBPpRlIKQw56SAPKgB6BJHKKwyPrxqCNxwIpattfiuPNwDgwKAo36Fo4aAoFozPrDnvAABMsPDkHizOoIzNd%2FDNBat49YKze7uEQNADVhx1fbiC8DztQGqy0wb6%2F%2FiQvsiM4yGgiB68DpYa7VAAqECgDe%2FolqEwbUhdBePzSWgK85RshgnNCPmMOfQ8Cv6bgQjVpAEgg2QLEaacUWf8bzMcxvDcfjG8RADANOCcKTELqxdgsUeQskCMgAIMiEPzg%2FIgzVogCLbousOQwTkbSJrbR3XCgFcQlncZijIgRSOMrjWWhpgscsYbDvr65cFbw%2BoQSmzwXKYst3mpRzk7L1eAizD2nFwzg8YbQrsw5AEAj%2FkJS9Lr%2FfCtdLOSzjCrjUkasFuwT4cQgmQ7UbSgzNXi8FugQ1sagg46mwKaglAwj1oM6bSCuIiNid3ZihYdqsB8DRe8%2BDYAD6swxT%2FAOzoxjMfnMVY2AA8D84xQ4ISJPAYh8IU%2FIA1BLQGG%2BG0CTStJCKRqkVG%2Fy7FMvQWK80K4INSdnQdOiIZczFJz4tG43BzL5AGEDbFlvGxkus%2BEOkcGzUuDEf9HnWtwHR0KiL6li4UK81Oi8NXIDLeukIDNDJR%2FyjPbjRWBF31AsAnc44c9IMNgGt06OsLKAcRAEAdCG%2F1nLVWNG8KMEjGBuXYeCU8yIGgssIPdHD3loCF44NxukyGXoIc1PbTagXTCvMUJuJNHvD77nA5a0A2UzM9pHOtmLdWhIE%2FHC0%2BnLM86LacrHFQzu4lrPEiXhsbJPEi9oC2OrT3Bu%2BG77cN%2F1yIEbrCieIOG6iv78IBFyM2P2zxcisN5XLzR1L371b0dStNYE%2Bh%2F0JhCARCrZl4YC8iVxemOmc3VgCwBjhAWtO5nccya0d5CpThtdXBWQgdH3jv%2Bt7pmGkwAdjwFCK6Bgg25yCtVL7AIeQlEJhxdaevl1dLEVzCbIbBPxQBDQ8JJNCDBoS6i8M4eAYtkKwDLnCwUra0%2BKL28JooPMiDO8JB50rbibpvorGujsfJFsDDOtQ6PlhDCdSBGAa1IwtEP4xrxBytEY7BcoDrlzUvAfRrtbOwtShBIBghthdBt%2BM3f3N1Wa60BLP6qps19HZucwSlTQ%2BOy4LyPqQAtxcqP%2F%2BswKB%2FhTU88uC4wsf68Boqx2SeqSWPze7eopoDfJtzBT%2F0wAKFAj3UQQK7dMQYxzqoASvgg8O7wrpOfPXEQD8QaYer8mCOPD%2Fk9J7%2FRgrcgzikAS7QwwssrhSzOnjLSTj2gziEgiusYbdy2cveND%2F4fCZzOD%2BsIyvggg2swKKOgTXAg4D%2BmRzImsv4Li7IwTqIQ50ncB3cwwtrPdf%2FKC7Ao1KL4THzAdIKnb4GQsZvuO3WuVr4op0Og6FOYQhgyNz%2FaLc1r%2BLiQnarshjCNR%2FggjxM9rb%2FAyuowZ02QArQAy647CIufuOPqdJMwT%2BEAuJHLOVbvoQQwDoDPu7A9SH%2BkDwAnC0f1LYRkr7pRy89WIPVt7qnX0KpPqEN6EMoQDru2LmDA0AAsMKQejzvy4HHf688nKMRX3zGfxnHA38cL1AIPDTS1yUr5O0QpkAovC7bj00K4MIjMr01sMEAYEUawDEb1DytBMKHYsUPrDAuROkLVD8ico4T4oL8D8MUcjAcu6H9W0N004oa4IIrAAQuXMN%2BACiCSxyrHgAA2GAl7lIIhhMpVrQ4ccowcaFeMLThCqLEhiAjXjR5kmEISOKsqSEAQMMhlnJeNggkbtgUlDtNpsClhOEPhJA0MAQytChPpRMDXUq5suUAAA5kDgO6lOcWjZdSMFSi8ZADr2CtxWK9GGZrVwBoIZYYKy5QWbMmHQSyZm0MQw0rcRWEydfvXJMHIXYloMaaOEgitYrj81LwRQ2swlAMcUmcKxspMWuOTJEDri0UHYr7ybBEqIQdP%2B%2FUALn13NcVZ8dW6iDpRNy2lQbgAFsvb6Ua5OotLvwigdwMlSNvTvH5xOjIYR4nTvs4dejLAUzXjh289t3bK3pvPV43d%2FTUr1OsPfG9c%2FXzv5uMDxP49%2Fu1AwIAOw%3D%3D";
var provMapCoords = {
	imgWidth: 710,
	imgHeight: 708,
	mapWidth: 670,
	mapHeight: 670,
	leftMargin: 31,
	topMargin: 19
};
//raw deflate code
(function(e){var t=32768;var n=0;var r=1;var i=2;var s=6;var o=true;var u=32768;var a=64;var f=1024*8;var l=2*t;var c=3;var h=258;var p=16;var d=8192;var v=13;if(d>u)alert("error: zip_INBUFSIZ is too small");if(t<<1>1<<p)alert("error: zip_WSIZE is too large");if(v>p-1)alert("error: zip_HASH_BITS is too large");if(v<8||h!=258)alert("error: Code too clever");var m=d;var g=1<<v;var y=g-1;var b=t-1;var w=0;var E=4096;var S=h+c+1;var x=t-S;var T=1;var N=15;var C=7;var k=29;var L=256;var A=256;var O=L+1+k;var M=30;var _=19;var D=16;var P=17;var H=18;var B=2*O+1;var j=parseInt((v+c-1)/c);var F;var I,q;var R;var U=null;var z,W;var X;var V;var $;var J;var K;var Q;var G;var Y;var Z;var et;var tt;var nt;var rt;var it;var st;var ot;var ut;var at;var ft;var lt;var ct;var ht;var pt;var dt;var vt;var mt;var gt;var yt;var bt;var wt;var Et;var St;var xt;var Tt;var Nt;var Ct;var kt;var Lt;var At;var Ot;var Mt;var _t;var Dt;var Pt;var Ht;var Bt;var jt;var Ft;var It;var qt;var Rt=function(){this.fc=0;this.dl=0};var Ut=function(){this.dyn_tree=null;this.static_tree=null;this.extra_bits=null;this.extra_base=0;this.elems=0;this.max_length=0;this.max_code=0};var zt=function(e,t,n,r){this.good_length=e;this.max_lazy=t;this.nice_length=n;this.max_chain=r};var Wt=function(){this.next=null;this.len=0;this.ptr=new Array(f);this.off=0};var Xt=new Array(0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0);var Vt=new Array(0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13);var $t=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7);var Jt=new Array(16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15);var Kt=new Array(new zt(0,0,0,0),new zt(4,4,8,4),new zt(4,5,16,8),new zt(4,6,32,32),new zt(4,4,16,16),new zt(8,16,32,32),new zt(8,16,128,128),new zt(8,32,128,256),new zt(32,128,258,1024),new zt(32,258,258,4096));var Qt=function(e){var t;if(!e)e=s;else if(e<1)e=1;else if(e>9)e=9;ct=e;R=false;ut=false;if(U!=null)return;F=I=q=null;U=new Array(f);V=new Array(l);$=new Array(m);J=new Array(u+a);K=new Array(1<<p);dt=new Array(B);for(t=0;t<B;t++)dt[t]=new Rt;vt=new Array(2*M+1);for(t=0;t<2*M+1;t++)vt[t]=new Rt;mt=new Array(O+2);for(t=0;t<O+2;t++)mt[t]=new Rt;gt=new Array(M);for(t=0;t<M;t++)gt[t]=new Rt;yt=new Array(2*_+1);for(t=0;t<2*_+1;t++)yt[t]=new Rt;bt=new Ut;wt=new Ut;Et=new Ut;St=new Array(N+1);xt=new Array(2*O+1);Ct=new Array(2*O+1);kt=new Array(h-c+1);Lt=new Array(512);At=new Array(k);Ot=new Array(M);Mt=new Array(parseInt(d/8))};var Gt=function(){F=I=q=null;U=null;V=null;$=null;J=null;K=null;dt=null;vt=null;mt=null;gt=null;yt=null;bt=null;wt=null;Et=null;St=null;xt=null;Ct=null;kt=null;Lt=null;At=null;Ot=null;Mt=null};var Yt=function(e){e.next=F;F=e};var Zt=function(){var e;if(F!=null){e=F;F=F.next}else e=new Wt;e.next=null;e.len=e.off=0;return e};var en=function(e){return K[t+e]};var tn=function(e,n){return K[t+e]=n};var nn=function(e){U[W+z++]=e;if(W+z==f)Hn()};var rn=function(e){e&=65535;if(W+z<f-2){U[W+z++]=e&255;U[W+z++]=e>>>8}else{nn(e&255);nn(e>>>8)}};var sn=function(){Z=(Z<<j^V[st+c-1]&255)&y;et=en(Z);K[st&b]=et;tn(Z,st)};var on=function(e,t){_n(t[e].fc,t[e].dl)};var un=function(e){return(e<256?Lt[e]:Lt[256+(e>>7)])&255};var an=function(e,t,n){return e[t].fc<e[n].fc||e[t].fc==e[n].fc&&Ct[t]<=Ct[n]};var fn=function(e,t,n){var r;for(r=0;r<n&&qt<It.length;r++)e[t+r]=It.charCodeAt(qt++)&255;return r};var ln=function(){var e;for(e=0;e<g;e++)K[t+e]=0;lt=Kt[ct].max_lazy;ht=Kt[ct].good_length;if(!o)pt=Kt[ct].nice_length;ft=Kt[ct].max_chain;st=0;Y=0;at=fn(V,0,2*t);if(at<=0){ut=true;at=0;return}ut=false;while(at<S&&!ut)hn();Z=0;for(e=0;e<c-1;e++){Z=(Z<<j^V[e]&255)&y}};var cn=function(e){var t=ft;var n=st;var r;var i;var s=it;var u=st>x?st-x:w;var a=st+h;var f=V[n+s-1];var l=V[n+s];if(it>=ht)t>>=2;do{r=e;if(V[r+s]!=l||V[r+s-1]!=f||V[r]!=V[n]||V[++r]!=V[n+1]){continue}n+=2;r++;do{}while(V[++n]==V[++r]&&V[++n]==V[++r]&&V[++n]==V[++r]&&V[++n]==V[++r]&&V[++n]==V[++r]&&V[++n]==V[++r]&&V[++n]==V[++r]&&V[++n]==V[++r]&&n<a);i=h-(a-n);n=a-h;if(i>s){ot=e;s=i;if(o){if(i>=h)break}else{if(i>=pt)break}f=V[n+s-1];l=V[n+s]}}while((e=K[e&b])>u&&--t!=0);return s};var hn=function(){var e,n;var r=l-at-st;if(r==-1){r--}else if(st>=t+x){for(e=0;e<t;e++)V[e]=V[e+t];ot-=t;st-=t;Y-=t;for(e=0;e<g;e++){n=en(e);tn(e,n>=t?n-t:w)}for(e=0;e<t;e++){n=K[e];K[e]=n>=t?n-t:w}r+=t}if(!ut){e=fn(V,st+at,r);if(e<=0)ut=true;else at+=e}};var pn=function(){while(at!=0&&I==null){var e;sn();if(et!=w&&st-et<=x){rt=cn(et);if(rt>at)rt=at}if(rt>=c){e=An(st-ot,rt-c);at-=rt;if(rt<=lt){rt--;do{st++;sn()}while(--rt!=0);st++}else{st+=rt;rt=0;Z=V[st]&255;Z=(Z<<j^V[st+1]&255)&y}}else{e=An(0,V[st]&255);at--;st++}if(e){Ln(0);Y=st}while(at<S&&!ut)hn()}};var dn=function(){while(at!=0&&I==null){sn();it=rt;tt=ot;rt=c-1;if(et!=w&&it<lt&&st-et<=x){rt=cn(et);if(rt>at)rt=at;if(rt==c&&st-ot>E){rt--}}if(it>=c&&rt<=it){var e;e=An(st-1-tt,it-c);at-=it-1;it-=2;do{st++;sn()}while(--it!=0);nt=0;rt=c-1;st++;if(e){Ln(0);Y=st}}else if(nt!=0){if(An(0,V[st-1]&255)){Ln(0);Y=st}st++;at--}else{nt=1;st++;at--}while(at<S&&!ut)hn()}};var vn=function(){if(ut)return;Q=0;G=0;yn();ln();I=null;z=0;W=0;nt=0;if(ct<=3){it=c-1;rt=0}else{rt=c-1;nt=0;nt=0}X=false};var mn=function(e,t,n){var r;if(!R){vn();R=true;if(at==0){X=true;return 0}}if((r=gn(e,t,n))==n)return n;if(X)return r;if(ct<=3)pn();else dn();if(at==0){if(nt!=0)An(0,V[st-1]&255);Ln(1);X=true}return r+gn(e,r+t,n-r)};var gn=function(e,t,n){var r,i,s;r=0;while(I!=null&&r<n){i=n-r;if(i>I.len)i=I.len;for(s=0;s<i;s++)e[t+r+s]=I.ptr[I.off+s];I.off+=i;I.len-=i;r+=i;if(I.len==0){var o;o=I;I=I.next;Yt(o)}}if(r==n)return r;if(W<z){i=n-r;if(i>z-W)i=z-W;for(s=0;s<i;s++)e[t+r+s]=U[W+s];W+=i;r+=i;if(z==W)z=W=0}return r};var yn=function(){var e;var t;var n;var r;var i;if(gt[0].dl!=0)return;bt.dyn_tree=dt;bt.static_tree=mt;bt.extra_bits=Xt;bt.extra_base=L+1;bt.elems=O;bt.max_length=N;bt.max_code=0;wt.dyn_tree=vt;wt.static_tree=gt;wt.extra_bits=Vt;wt.extra_base=0;wt.elems=M;wt.max_length=N;wt.max_code=0;Et.dyn_tree=yt;Et.static_tree=null;Et.extra_bits=$t;Et.extra_base=0;Et.elems=_;Et.max_length=C;Et.max_code=0;n=0;for(r=0;r<k-1;r++){At[r]=n;for(e=0;e<1<<Xt[r];e++)kt[n++]=r}kt[n-1]=r;i=0;for(r=0;r<16;r++){Ot[r]=i;for(e=0;e<1<<Vt[r];e++){Lt[i++]=r}}i>>=7;for(;r<M;r++){Ot[r]=i<<7;for(e=0;e<1<<Vt[r]-7;e++)Lt[256+i++]=r}for(t=0;t<=N;t++)St[t]=0;e=0;while(e<=143){mt[e++].dl=8;St[8]++}while(e<=255){mt[e++].dl=9;St[9]++}while(e<=279){mt[e++].dl=7;St[7]++}while(e<=287){mt[e++].dl=8;St[8]++}Sn(mt,O+1);for(e=0;e<M;e++){gt[e].dl=5;gt[e].fc=Dn(e,5)}bn()};var bn=function(){var e;for(e=0;e<O;e++)dt[e].fc=0;for(e=0;e<M;e++)vt[e].fc=0;for(e=0;e<_;e++)yt[e].fc=0;dt[A].fc=1;jt=Ft=0;_t=Dt=Pt=0;Ht=0;Bt=1};var wn=function(e,t){var n=xt[t];var r=t<<1;while(r<=Tt){if(r<Tt&&an(e,xt[r+1],xt[r]))r++;if(an(e,n,xt[r]))break;xt[t]=xt[r];t=r;r<<=1}xt[t]=n};var En=function(e){var t=e.dyn_tree;var n=e.extra_bits;var r=e.extra_base;var i=e.max_code;var s=e.max_length;var o=e.static_tree;var u;var a,f;var l;var c;var h;var p=0;for(l=0;l<=N;l++)St[l]=0;t[xt[Nt]].dl=0;for(u=Nt+1;u<B;u++){a=xt[u];l=t[t[a].dl].dl+1;if(l>s){l=s;p++}t[a].dl=l;if(a>i)continue;St[l]++;c=0;if(a>=r)c=n[a-r];h=t[a].fc;jt+=h*(l+c);if(o!=null)Ft+=h*(o[a].dl+c)}if(p==0)return;do{l=s-1;while(St[l]==0)l--;St[l]--;St[l+1]+=2;St[s]--;p-=2}while(p>0);for(l=s;l!=0;l--){a=St[l];while(a!=0){f=xt[--u];if(f>i)continue;if(t[f].dl!=l){jt+=(l-t[f].dl)*t[f].fc;t[f].fc=l}a--}}};var Sn=function(e,t){var n=new Array(N+1);var r=0;var i;var s;for(i=1;i<=N;i++){r=r+St[i-1]<<1;n[i]=r}for(s=0;s<=t;s++){var o=e[s].dl;if(o==0)continue;e[s].fc=Dn(n[o]++,o)}};var xn=function(e){var t=e.dyn_tree;var n=e.static_tree;var r=e.elems;var i,s;var o=-1;var u=r;Tt=0;Nt=B;for(i=0;i<r;i++){if(t[i].fc!=0){xt[++Tt]=o=i;Ct[i]=0}else t[i].dl=0}while(Tt<2){var a=xt[++Tt]=o<2?++o:0;t[a].fc=1;Ct[a]=0;jt--;if(n!=null)Ft-=n[a].dl}e.max_code=o;for(i=Tt>>1;i>=1;i--)wn(t,i);do{i=xt[T];xt[T]=xt[Tt--];wn(t,T);s=xt[T];xt[--Nt]=i;xt[--Nt]=s;t[u].fc=t[i].fc+t[s].fc;if(Ct[i]>Ct[s]+1)Ct[u]=Ct[i];else Ct[u]=Ct[s]+1;t[i].dl=t[s].dl=u;xt[T]=u++;wn(t,T)}while(Tt>=2);xt[--Nt]=xt[T];En(e);Sn(t,o)};var Tn=function(e,t){var n;var r=-1;var i;var s=e[0].dl;var o=0;var u=7;var a=4;if(s==0){u=138;a=3}e[t+1].dl=65535;for(n=0;n<=t;n++){i=s;s=e[n+1].dl;if(++o<u&&i==s)continue;else if(o<a)yt[i].fc+=o;else if(i!=0){if(i!=r)yt[i].fc++;yt[D].fc++}else if(o<=10)yt[P].fc++;else yt[H].fc++;o=0;r=i;if(s==0){u=138;a=3}else if(i==s){u=6;a=3}else{u=7;a=4}}};var Nn=function(e,t){var n;var r=-1;var i;var s=e[0].dl;var o=0;var u=7;var a=4;if(s==0){u=138;a=3}for(n=0;n<=t;n++){i=s;s=e[n+1].dl;if(++o<u&&i==s){continue}else if(o<a){do{on(i,yt)}while(--o!=0)}else if(i!=0){if(i!=r){on(i,yt);o--}on(D,yt);_n(o-3,2)}else if(o<=10){on(P,yt);_n(o-3,3)}else{on(H,yt);_n(o-11,7)}o=0;r=i;if(s==0){u=138;a=3}else if(i==s){u=6;a=3}else{u=7;a=4}}};var Cn=function(){var e;Tn(dt,bt.max_code);Tn(vt,wt.max_code);xn(Et);for(e=_-1;e>=3;e--){if(yt[Jt[e]].dl!=0)break}jt+=3*(e+1)+5+5+4;return e};var kn=function(e,t,n){var r;_n(e-257,5);_n(t-1,5);_n(n-4,4);for(r=0;r<n;r++){_n(yt[Jt[r]].dl,3)}Nn(dt,e-1);Nn(vt,t-1)};var Ln=function(e){var t,s;var o;var u;u=st-Y;Mt[Pt]=Ht;xn(bt);xn(wt);o=Cn();t=jt+3+7>>3;s=Ft+3+7>>3;if(s<=t)t=s;if(u+4<=t&&Y>=0){var a;_n((n<<1)+e,3);Pn();rn(u);rn(~u);for(a=0;a<u;a++)nn(V[Y+a])}else if(s==t){_n((r<<1)+e,3);On(mt,gt)}else{_n((i<<1)+e,3);kn(bt.max_code+1,wt.max_code+1,o+1);On(dt,vt)}bn();if(e!=0)Pn()};var An=function(e,t){J[_t++]=t;if(e==0){dt[t].fc++}else{e--;dt[kt[t]+L+1].fc++;vt[un(e)].fc++;$[Dt++]=e;Ht|=Bt}Bt<<=1;if((_t&7)==0){Mt[Pt++]=Ht;Ht=0;Bt=1}if(ct>2&&(_t&4095)==0){var n=_t*8;var r=st-Y;var i;for(i=0;i<M;i++){n+=vt[i].fc*(5+Vt[i])}n>>=3;if(Dt<parseInt(_t/2)&&n<parseInt(r/2))return true}return _t==d-1||Dt==m};var On=function(e,t){var n;var r;var i=0;var s=0;var o=0;var u=0;var a;var f;if(_t!=0)do{if((i&7)==0)u=Mt[o++];r=J[i++]&255;if((u&1)==0){on(r,e)}else{a=kt[r];on(a+L+1,e);f=Xt[a];if(f!=0){r-=At[a];_n(r,f)}n=$[s++];a=un(n);on(a,t);f=Vt[a];if(f!=0){n-=Ot[a];_n(n,f)}}u>>=1}while(i<_t);on(A,e)};var Mn=16;var _n=function(e,t){if(G>Mn-t){Q|=e<<G;rn(Q);Q=e>>Mn-G;G+=t-Mn}else{Q|=e<<G;G+=t}};var Dn=function(e,t){var n=0;do{n|=e&1;e>>=1;n<<=1}while(--t>0);return n>>1};var Pn=function(){if(G>8){rn(Q)}else if(G>0){nn(Q)}Q=0;G=0};var Hn=function(){if(z!=0){var e,t;e=Zt();if(I==null)I=q=e;else q=q.next=e;e.len=z-W;for(t=0;t<e.len;t++)e.ptr[t]=U[W+t];z=W=0}};var Bn=function(e,t){var n,r;It=e;qt=0;if(typeof t=="undefined")t=s;Qt(t);var i=new Array(1024);var o=[];while((n=mn(i,0,i.length))>0){var u=new Array(n);for(r=0;r<n;r++){u[r]=String.fromCharCode(i[r])}o[o.length]=u.join("")}It=null;return o.join("")};if(!e.RawDeflate)e.RawDeflate={};e.RawDeflate.deflate=Bn})(this);

var GlobalOptions = {
	ptupdate: true,
	ptupdatebeta: 0,
};
var Options = {
	includeCity: true,
	includeMarching: true,
	includeTraining: false,
	includeTrainingTotal: false,
	encRemaining: true,
	maxIdlePop: false,
	srcSortBy: 'level',
	srcMinLevel: 1,
	srcMaxLevel: 7,
	wildType: 1,
	unownedOnly: true,
	fixTower: true,
	fixTower2: true,
	fixMapDistance: true,
	fixMsgCount: true,
	fixMarchUnits: false,
	fixLoadCap: true,
	DontFilterTransportTroops: true,
	fixPageNav: true,
	enhanceViewMembers: true,
	enhanceARpts: true,
	allowAlterAR: true,
	enhanceMsging: true,
	ptWinIsOpen: false,
	ptWinDrag: true,
	ptWinPos: {},
	enableFoodWarn: true,
	enableFoodTower: false,
	foodWarnHours: 24,
	lastVersion: null,
	hideOnGoto: true,
	currentTab: false,
	gmtClock: true,
	chatEnhance: true,
	chatglobal: true,
	chatwhisper: true,
	chatbold: false,
	chatAttack: true,
	chatLeaders: true,
	fixKnightSelect: true,
	attackCityPicker: true,
	mapCoordsTop: true,
	dispBattleRounds: true,
	reportDeleteButton: true,
	overviewFontSize: 12,
	overviewAllowOverflow: false,
	curOverTab: 'A',
	curMarchTab: 'N',
	curOptTab: 'U',
	playersNoCities: false,
	enableWhisperAlert: true,
	whisperplay: 'whisper',
	enableTowerAlert: true,
	OverViewShowExtra: 'maximum',
	alertConfig: {
		aChat: false,
		aPrefix: '** I\'m being attacked! **',
		scouting: false,
		wilds: false,
		minTroops: 10000,
		spamLimit: 10
	},
	alertinterval: 10,
	alertmtroops: 0,
	celltext: {
		atext: false,
		provider: 0,
		num1: "000",
		num2: "000",
		num3: "0000"
	},
	rptType: 'alliance',
	arAttacker: 'Them',
	arTarget: 'Them',
	arPageFrom: 1,
	arPageTo: 5,
	TournoiLigne: 250,
	Xrenfort: 0,
	Yrenfort: 0,
	AttackHorloge: "21:00:00",
	AttackGoHorloge: null,
	AttackOnOff: false,
	AttackUnits: {},
	AttackFav: {
		0: {
			0: "200K miliciens",
			1: 0,
			2: 2e5,
			3: 0,
			4: 0,
			5: 0,
			6: 0,
			7: 0,
			8: 0,
			9: 0,
			10: 0,
			11: 0,
			12: 0,
			13: 0
		},
		1: {
			0: "200K dada",
			1: 0,
			2: 0,
			3: 0,
			4: 0,
			5: 0,
			6: 0,
			7: 2e5,
			8: 0,
			9: 0,
			10: 0,
			11: 0,
			12: 0,
			13: 0
		}
	},
	AttackFromCity: 0,
	AttackCibleX: 0,
	AttackCibleY: 0,
	AttackKnight: 0,
	DefendHorloge: "21:00:00",
	DefendGoHorloge: null,
	DefendOnOff: false,
	DefendUnits: {},
	DefendFav: {
		0: {
			0: "200K miliciens",
			1: 0,
			2: 2e5,
			3: 0,
			4: 0,
			5: 0,
			6: 0,
			7: 0,
			8: 0,
			9: 0,
			10: 0,
			11: 0,
			12: 0,
			13: 0
		},
		1: {
			0: "200K dada",
			1: 0,
			2: 0,
			3: 0,
			4: 0,
			5: 0,
			6: 0,
			7: 2e5,
			8: 0,
			9: 0,
			10: 0,
			11: 0,
			12: 0,
			13: 0
		}
	},
	DefendFromCity: 0,
	DefendCibleX: 0,
	DefendCibleY: 0,
	DefendKnight: 0,
	DefendRsrv: {
		1: 0,
		2: 0,
		3: 0,
		4: 0,
		5: 0,
		6: 0,
		7: 0,
		8: 0,
		9: 0,
		10: 0,
		11: 0,
		12: 0,
		13: 0,
		14: 0,
		15: 0,
		16: 0,
		17: 0,
		18: 0,
		21: 0
	},
	enhancedinbox: true,
	EnhCBtns: false,
	DbClkDefBtns: true,
	ColrCityBtns: true,
	miniRefresh: false,
	miniRefreshIntvl: 3,
	ChatIcons: true,
	mapInfo: false,
	mapInfo2: false,
	mapInfo3: false,
	dispStatus: true,
	fixApothTime: true,
	fixTRAetherCost: true,
	fixMMBImage: true,
	multiBrowserAllow: false,
	fixChatTime: true,
	togRaidPatch: false,
	marchRaidState: {
		0: false,
		1: false,
		2: false,
		3: false,
		4: false,
		5: false,
		6: false,
		7: false
	},
	MoveFurniture: true,
	fixMapDblClick: false,
	WarnAscension: false,
	WarnAscensionInterval: 1,
};
var Colors = {
	DarkRow: '#eee',
	ButtonSelected: '#444444',
	ChatLeaders: '#B8B8B8',
	ChatGlobal: '#CCCCFF',
	OverviewDarkRow: '#f0f0f0',
	ChatAll: '#99ccff',
	ChatAtt: '#FF4D4D',
	ChatWhisper: '#FF4D4D',
	ChatVC: '#00ff00',
	ChatChancy: '#F8E151',
	Opacity: '0.9',
};
var AutoTrainOptions = {
	intervalSecs: 60,
	doTraps:			{1:false,2:false,3:false,4:false,5:false,6:false,7:false,8:false},
	doCalrops:			{1:false,2:false,3:false,4:false,5:false,6:false,7:false,8:false},
	doSpikes:			{1:false,2:false,3:false,4:false,5:false,6:false,7:false,8:false},
	doXbows:			{1:false,2:false,3:false,4:false,5:false,6:false,7:false,8:false},
	troopType:			{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
	keepFood:				{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
	keepWood:				{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
	keepStone:			{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
	keepOre:				{1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0},
};
var ChatIcons = {};
var IRCOptions = {
	IRCCmdEnable: false,
	IRCCmdSeen: {
		enable: false
	},
	IRCCmdRules: {
		enable: false,
		message: ""
	},
};
var GameIcons = {
	goldImgTiny: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/chrome_icon_gold.png>',
	foodImgTiny: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/chrome_icon_food.png>',
	woodImgTiny: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/chrome_icon_wood.png>',
	stoneImgTiny: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/chrome_icon_stone.png>',
	oreImgTiny: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/chrome_icon_ore.png>',
	astoneImgTiny: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/chrome_icon_aetherstone.png>',
	goldImg: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/gold_30.png>',
	foodImg: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/food_30.png>',
	woodImg: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/wood_30.png>',
	stoneImg: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/stone_30.png>',
	oreImg: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/iron_30.png>',
	astoneImg: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/aetherstone_30.png>',
	RightArrow: 'https://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/autoAttack/across_arrow.png',
	DownArrow: 'https://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/autoAttack/down_arrow.png',
	transport: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/transporting.jpg>',
	reinforce: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/reinforce.jpg>',
	scouting: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/scouting.jpg>',
	attacking: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/attacking.jpg>',
	raidStopped: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/autoAttack/raid_stopped_desat.png>',
	raidResting: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/autoAttack/raid_resting.png>',
	returning: '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/returning.jpg>',
};

var JSON2 = JSON;
var Cities = {};
var Seed = unsafeWindow.seed;
var Tabs = {};
var currentName = 'Overview';
var mainPop;
var CPopUpTopClass = 'ptPopTop';
var KOCversion = null;
var ptStartupTimer = null;
var uW = unsafeWindow;
var seed_player_g = uW.seed.player.g;
var ResetColors = false;
var nTroopType = 20;
var reportpos = {
	x: -999,
	y: -999
};
var crestname = {};
for (var i = 1101; i < 1115; i++)
	crestname[i] = uW.itemlist['i' + i].name

function getFirefoxVersion() {
	var ver = '',
		i;
	var ua = navigator.userAgent;
	if (ua == null || (i = ua.indexOf('Firefox/')) < 0)
		return;
	return ua.substr(i + 8);
}

function ptStartup() {
	clearTimeout(ptStartupTimer);
	if (uW.ptLoaded)
		return;
	var metc = getClientCoords(document.getElementById('main_engagement_tabs'));
	if (metc.width == null || metc.width == 0) {
		ptStartupTimer = setTimeout(ptStartup, 1000);
		return;
	}
	KOCversion = anticd.getKOCversion();
	logit("KofC client version: " + KOCversion);
	readOptions();
	readGlobalOptions();
	readChatIconsOptions();
	readColors();
	readAutoTrainOptions();
	readIRCOptions();
	if (AutoTrainOptions.intervalSecs < 60)
		AutoTrainOptions.intervalSecs = 60;
	saveAutoTrainOptions();
	//logit ('g_timeoff: '+ uW.g_timeoff);
	Seed = uW.seed;
	var gmstyles = '\
	.ptcastleBut {outline:0px; margin-left:0px; margin-right:0px; width:24px; height:26px; font-size:12px; font-weight:bold;}\
    .ptcastleBut:hover {background-image:url("' + URL_CASTLE_BUT_SEL + '")}\
    .ptcastleButNon {background-image:url("' + URL_CASTLE_BUT + '")}\
    .ptcastleButSel {background-image:url("' + URL_CASTLE_BUT_SEL + '")}\
  ';
	var trstyles = 'div#throneMainContainer div#tableContainer{width:80px;height:213px;top:400px;left:450px;}\
				div#throneMainContainer div#trophyContainer{width:71px;height:86px;top:41px;left:381px;}\
				div#throneMainContainer div#statueContainer{width:124px;height:296px;top:274px;left:150px;z-index:97;}\
				div#throneMainContainer div#advisorContainer{width:141px;height:240px;bottom:0pt;right:0pt;}\
				div#throneMainContainer div#heroContainer{width:85px;height:136px;top:173px;left:450px;}';
	var styles = '\
    .ptdivHeader       {transparent;height: 16px;border-bottom:0px solid #000000;font-weight:bold;font-size:11px;opacity:0.75;margin-left:0px;margin-right:0px;margin-top:1px;margin-bottom:0px;padding-top:4px;padding-right:10px;vertical-align:text-top;align:left}\
    .ptdivLink         {color:#000;text-decoration:none;}\
    .ptdivLink:Hover   {color:#000;text-decoration:none;}\
    .ptdivLink:Active  {color:#000;text-decoration:none;}\
    .ptdivHide         {display:none}\
    .xtab {padding-right: 5px; border:none; background:none; white-space:nowrap}\
    .xtabBR {padding-right: 5px; border:none; background:none;}\
    div.ptDiv {background-color:' + Colors.OverviewDarkRow + ';}\
    table.ptTab tr td {border:none; background:none; white-space:nowrap;}\
    table.ptTabPad tr td {border:none; background:none; white-space:nowrap; padding: 2px 4px 2px 4px;}\
    table.ptTabBR tr td {border:none; background:none;}\
    table.ptTabLined tr td {border:1px none none solid none;}\
    table.ptTabOverview tr td {border-left:1px solid #ccc; white-space:nowrap; padding: 1px; background-color:' + Colors.OverviewDarkRow + ';}\
    table.ptTabPad tr td.ptentry {background-color:#FFEECC ; padding-left: 8px;}\
    table.ptNoPad tr td {border:none; background:none; white-space:nowrap; padding:0px}\
    table.ptPlayers tr td {background-color:none; padding-left:5px; padding-right:5px;}\
    .ptOddrow {background-color:' + Colors.DarkRow + '}\
    .ptstat {border:1px solid; border-color:#000000; font-weight:bold; padding-top:2px; padding-bottom:2px; text-align:center; color:#ffffff; background-color:#6FA2FF;  -moz-border-radius:5px;}\
    .ptStatLight {color:#ddd}\
    .ptentry {padding: 7px; white-space:nowrap;}\
    .ptErrText {font-weight:bold; color:#600000}\
     button::-moz-focus-inner, input[type="submit"]::-moz-focus-inner { border: none; }\
    .ptChatAttack {color: #000; font-weight:bold; background-color:' + Colors.ChatAtt + '; }\
    .ptChatRecall {color: #000; font-weight:bold; background-color:#6B8E23; }\
    .ptChatWhisper {font-weight:bold; color: ' + Colors.ChatWhisper + ';}\
    .ptChatAlliance {background-color: ' + Colors.ChatAll + ';}\
	.ptChatScripter {background-image:url();}\
	.ptChatRat {background-image: url();}\
    .ptChatGlobal {background-color:' + Colors.ChatGlobal + ';}\
    .ptChatBold {font-weight:bold}\
    .ptChatGlobalAll {font-weight:bold;background-color:' + Colors.ChatGlobal + ';}\
    .ptChatIcon {border: 1px inset black}\
    .ptChatCHAN {color:#000; background-color:' + Colors.ChatChancy + ';}\
    .ptChatVICE {color:#000; background-color:' + Colors.ChatVC + ';}\
	.ptChatOFFI {color:#000; background-color:' + Colors.ChatLeaders + ';}\
    span.whiteOnRed {padding-left:3px; padding-right:3px; background-color:#700; color:white; font-weight:bold}\
    span.boldRed {color:#800; font-weight:bold}\
    span.boldDarkRed {color:#600; font-weight:bold}\
    a.ptButton20 {color:#ffff80}\
    hr.ptThin {padding:0px; margin:0px}\
    input.pbSubtab {cursor:pointer; width:10em; margin-right:15px;}\
    input.pbSubtabSel {background-color:' + Colors.ButtonSelected + '; color:white; font-weight:bold; cursor:none !important}\
    table.ptMainTab {empty-cells: show;  margin-left: 5px;  margin-top: 4px; padding: 1px;  padding-left:30px; }\
    table.ptMainTab tr td a {color:inherit }\
    table.ptMainTab tr td   {height:60%; empty-cells:show; padding: 0px 4px 0px 4px;  margin-top:5px; white-space:nowrap; border: 1px solid; border-style: none none solid none; -moz-border-radius:5px; }\
    table.ptMainTab tr td.spacer {padding: 0px 1.5px;}\
    table.ptMainTab tr td.sel {font-weight:bold; font-size:13px; border: 1px solid #000000; background: -moz-linear-gradient(top, #cfeef7 0%, #73cee7 24%, #0aaad6 44%, #53c2e1 79%, #88d5ea 100%);}\
    table.ptMainTab tr td.notSel {font-weight:bold; font-size:13px; color: #ffffff; border: 1px solid #000000; background: -moz-linear-gradient(top, #cfeef7 0%, #73cee7 24%, #0aaad6 44%, #53c2e1 79%, #88d5ea 100%);}\
    tr.ptPopTop td { background-color:transparent; border:none; height: 21px;  padding:0px; }\
    tr.ptretry_ptPopTop td { background-color:#a00; color:#fff; border:none; height: 21px; padding:0px; }\
	.kocHeader .timeAndDomain {margin: 13px 0px 0px 15px;}\
	.kocmain .mod_maparea .mod_citylist .city_warning{background: url(' + URL_CASTLE_WARN + ') no-repeat; margin-top: 4px;}\
    input.ptButCancel {background-color:#a00; font-weight:bold; color:#fff}\
    .CPopMain { border:1px solid #000000; -moz-box-shadow:inset 0px 0px 10px #6a6a6a; -moz-border-radius-bottomright: 20px; -moz-border-radius-bottomleft: 20px;}\
    .CPopup  {border:5px ridge #666; opacity:' + Colors.Opacity + '; -moz-border-radius:25px; -moz-box-shadow: 1px 1px 5px #000000;}';
	logit("* KOCpowerTools v" + Version + " Loaded");
	if (TEST_WIDE) {
		// max cityname len = 15?
		for (i = 0; i < Seed.cities.length; i++) {
			Seed.cities[i][1] = Seed.cities[i][1] + 'LONGERNAMETEST';
			Seed.cities[i][1] = Seed.cities[i][1].substr(0, 15);
		}
		var numToAdd = TEST_WIDE_CITIES - Seed.cities.length;
		while (numToAdd-- > 0) {
			var cityId = Math.random() * 1234567;
			Seed.cities.push(Seed.cities[0]);
		}
	}
	setCities();
	// TODO: Make sure WinPos is visible on-screen ?
	if (Options.ptWinPos == null || Options.ptWinPos.x == null || Options.ptWinPos.x == '' || isNaN(Options.ptWinPos.x)) {
		//logit ( 'Options.ptWinPos: '+ inspect (Options.ptWinPos, 5, 1)); 
		var c = getClientCoords(document.getElementById('main_engagement_tabs'));
		Options.ptWinPos.x = c.x + 4;
		Options.ptWinPos.y = c.y + c.height;
		saveOptions();
	}
	mainPop = new CPopup('ptmain', Options.ptWinPos.x, Options.ptWinPos.y, 750, 800, Options.ptWinDrag,
		function () {
			tabManager.hideTab();
			Options.ptWinIsOpen = false;
			saveOptions();
		});
	GM_addStyle(gmstyles);
	if (Options.MoveFurniture) {
		GM_addStyle(trstyles);
	}
	mainPop.getMainDiv().innerHTML = '<STYLE>' + styles + '</style>';
	//  FoodAlerts.init();
	TowerAlerts.init();
	MapDistanceFix.init();
	AllianceReports.init();
	messageNav.init();
	PageNavigator.init();
	ChatStuff.init();
	AttackDialog.init();
	battleReports.init();
	CoordBox.init();
	GMTclock.init();
	DispReport.init();
	mapinfoFix.init();
//	MarchUnitsFix.init(); fixed by kabam
	LoadCapFix.init();
	ApothTimeFix.init();
	TRAetherCostFix.init();
	mmbImageFix.init();
	ChatTimeFix.init();
	bypassMulti.init();
	BarbRaidMarchPatch.init();
	MapDoubleClickFix.init();
	towho.init();
	cdtd.init();
	tabManager.init(mainPop.getMainDiv());
	AudioManager.init();
	AllianceReportsCheck.init();
	//  uW.cm.unitFrontendType["9"] = "specialist";  //change type of wagons from siege to avoid siege load bug
	uW.cm.unitFrontendType["15"] = "specialist"; //change type of siege walls from siege to avoid siege load bug
	if (Options.ptWinIsOpen) {
		mainPop.show(true);
		tabManager.showTab();
	}
	window.addEventListener('unload', onUnload, false);
	if (Options.fixTower)
		TowerAlerts.enableFixTarget(true);
	if (Options.fixTower2)
		TowerAlerts.enableFixFalseReports(true);
	AddMainTabLink('TOOLS', eventHideShow, mouseMainTab);

	if (uW.tvuid == "6046539") AddMainTabLink('DEBUG', debugWin.doit);
	//  var ss_onload = unsafeWindow.seed.ss;
	//  multiBrowserOverride();
	//TestSomething.init ();  
	//setInterval (function(){logit (inspect (getClientCoords (mainPop.getMainDiv()), 3, 1))}, 2000);  
	uW.ptLoaded = true;
}

function multiBrowserOverride() {
	return; //disabled until fix?
	// get a pointer to the function
	var old_usa = unsafeWindow.update_seed_ajax;
	// create a new own
	var usa = function (marchForceUpdateFlag, updateSeedDoneCallback, isCancelTraining) {
			if (Options.allowMultiBroswer) {
				// remove a variable
				//delete unsafeWindow.seed.ss;
				//	 unsafeWindow.seed.ss = ss_onload;
			}
			// call the original function
			old_usa(marchForceUpdateFlag, updateSeedDoneCallback, isCancelTraining);
		}
		// install our override
	unsafeWindow.update_seed_ajax = usa;
}

function ToggleDivDisplay(h, w, div) {
	var dc = uW.jQuery('#' + div).attr('class');
	if (dc) {
		if (dc.indexOf('ptdivHide') >= 0) {
			uW.jQuery('#' + div).attr('class', '');
			uW.jQuery('#' + div + 'Arrow').attr('src', GameIcons.DownArrow);
		} else {
			uW.jQuery('#' + div).attr('class', 'ptdivHide');
			uW.jQuery('#' + div + 'Arrow').attr('src', GameIcons.RightArrow);
		}
	} else {
		uW.jQuery('#' + div).attr('class', 'ptdivHide');
		uW.jQuery('#' + div + 'Arrow').attr('src', GameIcons.RightArrow);
	}
}

function onUnload() {
	Options.ptWinPos = mainPop.getLocation();
	saveOptions();
	if (!ResetColors) saveColors();
}
var knightRoles = [
	['Foreman', 'politics', 'Pol'],
	['Marshall', 'combat', 'Com'],
	['Alchemystic', 'intelligence', 'Int'],
	['Steward', 'resourcefulness', 'Res'],
];

var rats = ["2466324", "5801935", "14737553", "2915086"]; //people who openly tried to destroy script development including reporting scripters to kabam.  now the joke is on them.
var scripters = ["7552815", "10681588", "1747877", "14909786", "2865067", "10153485", "15182839", "1550996", "1617431819", "9688786", "8184813", "9863346", "11107993", "9751486", "5614388", "424090", "14845619", "8480468", "7042380", "731589","1112699"];

Tabs.Notes = {
	tabOrder: 999,
	tabLabel: "Notes",
	myDiv: null,
	show: function () {
		var h = "<div align=center> <b>Saved Notes</b></div>";
		h += "<div style='height: 700px; overflow-y: scroll;'>";
		h += "<table width='100%'><tr>";
		h += "<td width=150><b>Player</b></td><td><b>Notes</b></td><td width=100><b>Action</b></td></tr>";
		for (player in Tabs.Notes.noteValues) {
			var note = Tabs.Notes.noteValues[player];
			h += "<tr>";
			h += "<td valign=top>" + player + " / " + note.id + "<br></td>";
			h += "<td valign=top><div>" + note.text + "</div>";
			h += '<div><span onclick="PTpl(this, ' + note.id + ')"><a>Leaderboard</a></span></div><br></td>';
			h += "<td valign=top><button type='button' onclick=\'editNoteLink(\"" + player + "\",\"" + note.id + "\")\'>Edit</button><br><button type='button' onclick=\'removeNote(\"" + player + "\") \'>Delete</button><br></td>";
			h += "</tr>";
		}
		h += "</table>";
		myDiv.innerHTML = h;
	},
	hide: function () {},
	init: function (div) {
		myDiv = div;
		unsafeWindow.removeNote = Tabs.Notes.removeNote;
		unsafeWindow.editNoteLink = Tabs.Notes.editNoteLink;
		// override the map tooltips
		var oldSMTT = unsafeWindow.showMapTileTooltip;
		var newSMTT = function (j, h, n, f, l, k) {
			// add our stuff to the tooltip
			var j2 = Tabs.Notes.updateTooltip(unescape(j));
			if (j2) {
				j = escape(j2);
			}
			oldSMTT(j, h, n, f, l, k);
		};
		unsafeWindow.showMapTileTooltip = newSMTT;
		// create a regular expression object to use
		Tabs.Notes.re = new RegExp(unsafeWindow.g_js_strings.MapObject.ownedby + ": (\\w*)");
		// add a new option to the context menus
		var cityType = unsafeWindow.cm.CITY_STATUS.ANOTHER_PLAYER_CITY_AND_NOT_IN_YOUR_ALLIANCE;
		uW.cm.ContextMenuMapController.prototype.MapContextMenus.City[cityType].push("ttMod");
		cityType = unsafeWindow.cm.CITY_STATUS.ANOTHER_PLAYER_CITY_AND_IN_YOUR_ALLIANCE;
		uW.cm.ContextMenuMapController.prototype.MapContextMenus.City[cityType].push("ttMod");
		var wildContext;
		wildContext = uW.cm.ContextMenuMapController.prototype.MapContextMenus.EnemyWilderness;
		for (wild in wildContext) {
			wildContext[wild].push("ttMod");
		}
		wildContext = uW.cm.ContextMenuMapController.prototype.MapContextMenus.Wilderness;
		for (wild in wildContext) {
			wildContext[wild].push("ttMod");
		}
		wildContext = uW.cm.ContextMenuMapController.prototype.MapContextMenus.FriendlyWilderness;
		for (wild in wildContext) {
			wildContext[wild].push("ttMod");
		}
		wildContext = uW.cm.ContextMenuMapController.prototype.MapContextMenus.AllianceWilderness;
		for (wild in wildContext) {
			wildContext[wild].push("ttMod");
		}
		// add actions to the menu item
		var mod = new CalterUwFunc('cm.ContextMenuMapController.prototype.calcButtonInfo', [
			['default:', 'case "ttMod":' +
				'  b.text = "Player Notes"; b.color = "green"; ' +
				'  b.action = function () { ' +
				'    edit_notes(e.user); ' +
				'  }; ' +
				'  if (e.user.id) d.push(b); break; ' +
				' default: '
			]
		]);
		mod.setEnable(true);
		// callback function for the context menu option
		unsafeWindow.edit_notes = Tabs.Notes.createPopup;
		// load saved values
		Tabs.Notes.load();
		Tabs.Notes.show();
	},
	save: function () {
		var serverID = GetServerId();
		var s = JSON2.stringify(Tabs.Notes.noteValues);
		if (s) {
			// use setTimeout to fix the context
			setTimeout(function () {
				GM_setValue('PlayerNotes_' + serverID, s);
			}, 0);
		}
	},
	load: function () {
		var serverID = GetServerId();
		try {
			var s = JSON.parse(GM_getValue('PlayerNotes_' + serverID));
			if (s) Tabs.Notes.noteValues = s;
		} catch (e) {
			logit(e);
		}
	},
	editNoteLink: function (name, id) {
		uW.ptuser = {};
		uW.ptuser.id = id;
		uW.ptuser.username = name;
		uW.edit_notes(uW.ptuser);
	},
	createPopup: function (user) {
		Tabs.Notes.ToolsOpen = false;
		if (Options.ptWinIsOpen == true) {
			Tabs.Notes.ToolsOpen = true;
			eventHideShow();
		}
		// get the current note
		var notes = "";
		if (Tabs.Notes.noteValues[user.username]) {
			notes = Tabs.Notes.noteValues[user.username];
			notes = notes.text.replace(/<br\/>/g, "\n");
		}
		// popup
		unsafeWindow.Modal.multiButton({
			buttons: [{
				txt: "Save",
				exe: function b() {
					Tabs.Notes.saveNote(user);
					unsafeWindow.Modal.hideModal();
					if (Tabs.Notes.ToolsOpen == true) {
						eventHideShow();
					}
				}
			}, {
				txt: unsafeWindow.g_js_strings.commonstr.cancel,
				exe: function () {
					unsafeWindow.Modal.hideModal()
					if (Tabs.Notes.ToolsOpen == true) {
						eventHideShow();
					}
				}
			}],
			body: "<strong> Enter notes for player: </strong><span id='notes_player'>" + user.username + "</span><br/><br/><textarea id='notes_text' rows='4' columns='50' style='width:300px;' >" + notes + "</textarea>",
			title: "Player Notes"
		});
	},
	// callback for the save button
	saveNote: function (user) {
		var player = user.username;
		if (player) {
			var noteData = {};
			var notes = unsafeWindow.jQuery("#notes_text").val();
			noteData.text = notes.replace(/\n/g, "<br/>");
			noteData.id = user.id;
			Tabs.Notes.noteValues[player] = noteData;
			Tabs.Notes.save();
			var nl = document.getElementById('ptplayernotes');
			if (nl) {
				nl.innerHTML = notes;
			}
		}
	},
	// callback for the delete button
	removeNote: function (player) {
		if (player && Tabs.Notes.noteValues[player]) {
			delete Tabs.Notes.noteValues[player];
			Tabs.Notes.save();
		}
		Tabs.Notes.show();
	},
	// add the notes to the map tooltip
	updateTooltip: function (ttHtml) {
		var newTT = null;
		var result = Tabs.Notes.re.exec(ttHtml);
		if (result && result[1]) {
			var note;
			if (note = Tabs.Notes.noteValues[result[1]]) {
				var element_class = "";
				var id = "" + note.id;
				if (rats.indexOf(id) >= 0 && id != uW.tvuid) {
					element_class = 'ptChatRat';
				}
				if (scripters.indexOf(id) >= 0) {
					element_class = 'ptChatScripter';
				}
				newTT = ttHtml.replace("<div>Might:", "<div style='position: relative; left: 5%; width: 90%;' class ='" + element_class + "'>" + note.text + "</div><div>Might:");
			}
		}
		return newTT;
	},
	// object to store the notes
	noteValues: {},
	ToolsOpen: false,
};
var CoordBox = {
	init: function () {
		var t = CoordBox;
		t.boxDiv = searchDOM(document.getElementById('maparea_map'), 'node.className=="mod_coord"', 3, false);
		t.setEnable(Options.mapCoordsTop);
	},
	setEnable: function (tf) {
		var t = CoordBox;
		if (t.boxDiv == null)
			return;
		if (tf)
			t.boxDiv.style.zIndex = '100000';
		else
			t.boxDiv.style.zIndex = '10011';
	},
	isAvailable: function () {
		var t = CoordBox;
		return !(t.boxDiv == null);
	},
};
var TestSomething = {
	init: function () {
		t = TestSomething;
		return;
		var ft = uW.modal_messages.toString().replace(/}\s*$/, 'TESTmyHook(); }');
		//    logit ('FT: modal_messages = '+ ft);
		uW.TESTmyHook = t.hook;
		/***
var scr = document.createElement('script');   
scr.innerHTML = 'modal_messages = '+ ft;
document.body.appendChild(scr);
setTimeout ( function (){document.body.removeChild(scr);}, 500);
***/
		//with (unsafeWindow){
		//  eval ('uW.modal_messages = '+ ft);
		//  eval ('modal_messages = function (){alert("xxx")}');
		logit("WITH");
		uW.modal_messages = eval('function (){alert("xxx")}');
		logit("EVALED");
		//}
		setTimeout(function () {
			var ft = uW.modal_messages.toString();
			logit('uW.modal_messages:\n' + ft.substr(ft.length - 500));
		}, 100);
	},
	hook: function () {
		logit('TestSomething.hook');
		logit('tvuid: ' + tvuid);
		logit('uW.tvuid: ' + uW.tvuid);
	},
}
var battleReports = {
	init: function () {
		var t = battleReports;
		//    t.getReportDisplayFunc = new CalterUwFunc ('getReportDisplay', [['return K.join("")', 'var themsg=K.join(""); themsg=getReportDisplay_hook(themsg, arguments[1]); return themsg']]); //Alliance report battle rounds function
		t.getReportDisplayFunc = new CalterUwFunc('getReportDisplay', [
			['return K.join("")', 'var themsg=K.join(""); themsg=getReportDisplay_hook(themsg, arguments[1]); themsg=getReportDisplay_hookz(themsg, arguments[1]); return themsg']
		]); //Alliance report battle rounds function
		uW.getReportDisplay_hook = t.hook;
		uW.getReportDisplay_hookz = t.hookz;
		t.getReportDisplayFunc.setEnable(true);
		t.renderBattleReportFunc = new CalterUwFunc('Messages.viewMarchReport', [
			[/\$\("modal_msg_list"\)\.innerHTML\s*=\s*cm\.MarchReportController\.getMarchReport\(c,\s*y\)/, 'var msg = cm.MarchReportController.getMarchReport(c, y); $("modal_msg_list").innerHTML = renderBattleReport_hook(msg,c,y);']
		]); //March reports battle rounds function
		uW.renderBattleReport_hook = t.hook2;
		t.renderBattleReportFunc.setEnable(true);
		uW.deleteAreport = t.e_deleteReport;
		uW.MoreReport = t.e_MoreReport;
		uW.PostReport = t.e_PostReport;
	},
	setEnable: function () {},
	isRoundsAvailable: function () {
		var t = battleReports;
		return t.getReportDisplayFunc.isAvailable() || t.renderBattleReportFunc.isAvailable();
	},
	e_deleteReport: function (rptid) {
		var t = battleReports;
		t.ajaxDeleteMyReport(rptid);
	},
	e_MoreReport: function (rptid, side) {
		var t = battleReports;
		alert('WIP ;)');
	},
	e_PostReport: function (rptid) {
		var msg = 'Report No: ' + rptid;
		sendChat("/a " + msg);
	},
	SendChat: function (name, mess) {
		var inp = document.getElementById('mod_comm_input');
		inp.value = "@" + name + ' ' + mess;
		unsafeWindow.Chat.sendChat();
	},
	ajaxDeleteMyReport: function (rptid, isUnread, side, isCityReport, notify) {
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.s0rids = rptid;
		params.s1rids = '';
		params.cityrids = '';
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/deleteCheckedReports.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok && isUnread) {
					uW.seed.newReportCount = parseInt(seed.newReportCount) - 1;
					uW.messages_notify_bug()
				}
				if (notify)
					notify(rslt.errorMsg);
			},
			onFailure: function () {
				if (notify)
					notify('AJAX ERROR');
			},
		});
	},
	hookz: function (msg, rslt) {
		msg = msg.replace(/(\bReport\sNo\:\s([0-9]+))/g, '<a onclick=\'ptChatReportClicked($2,0)\'>$1</a>');
		return msg;
	},
	hook2: function (msg, args, rslt) {
		//alert('hook2 '+rslt);
		if (rslt.rnds && Options.dispBattleRounds) {
			msg = msg.replace(/<\/ul>.*\s*<\/div>.*\s*<div class="unitsContainer">/im, '<li><span class=\'label\'>Rounds: </span><span class=\'value\'>' + rslt.rnds + '</span></li></ul></div><div class="unitsContainer">');
		}
		if (Options.reportDeleteButton) {
			msg = msg.replace(/Reports<\/span><\/a>/im, 'Reports</span></a><a class=\'button20\' onclick=\'PostReport(' + args[0] + ',false)\'><span>Post To Chat</span></a>'); //Post to Chat button
			msg = msg.replace(/Reports<\/span><\/a>/im, 'Reports</span></a><a class=\'button20\' onclick=\'MoreReport(' + args[0] + ',' + args[1] + ',false)\'><span>More</span></a>'); //More button
			msg = msg.replace(/Reports<\/span><\/a>/im, 'Reports</span></a><a class=\'button20\' onclick=\'deleteAreport(' + args[0] + ',false)\'><span>' + uW.g_js_strings.commonstr.deletetx + '</span></a>'); //Delete button
		}
		return msg;
	},
	hook: function (msg, rslt) {
		//alert('hook '+rslt);
		if (rslt.rnds && Options.dispBattleRounds) {
			msg = msg.replace(/(Attackers <span.*?)<\/div>/im, '$1<BR>Rounds: ' + rslt.rnds + '</div>');
		}
		return msg;
	},
}
var mapinfoFix = {
	init: function () {
		var t = mapinfoFix;
		t.calcButtonInfo = new CalterUwFunc('cm.ContextMenuMapController.prototype.calcButtonInfo', [
			[/case\s*"reassign":b\.text\s*=\s*g_js_strings\.commonstr\.reassign;b\.color\s*=\s*"blue";b\.action\s*=\s*function\s*\(\)\s*{modal_attack\(2,\s*e\.tile\.x,\s*e\.tile\.y\);*};d\.push\(b\);break;/,
				'case "reassign":b.text=g_js_strings.commonstr.reassign;b.color="blue";b.action=function(){modal_attack(5,e.tile.x,e.tile.y);};d.push(b);break;'
			]
		]);
		t.bookMarkMod = new CalterUwFunc('cm.ContextMenuMapController.prototype.calcButtonInfo', [
			[/case\s*"bookmark":/, 'case "bookmark": try { if (e.city && cm.tileInfo[e.tile.id] && cm.tileInfo[e.tile.id].cityName ) {e.tile.name = e.user.username + "/" + cm.tileInfo[e.tile.id].cityName;}} catch (err1) {} ']
		]);
		t.MapContextMenus = new CalterUwFunc('cm.ContextMenuMapController.prototype.calcCityType', [
			['return c', 'c = calcCityTypeFix(c,d);return c']
		]);
		t.calcButtonInfo.setEnable(Options.mapInfo);
		t.MapContextMenus.setEnable(Options.mapInfo2);
		t.bookMarkMod.setEnable(Options.mapInfo3);
		uW.cm.ContextMenuMapController.prototype.MapContextMenus.City["2"].splice(4, 0, "reassign");
		//	    add reinforcement of wilds
		for (jj in uW.cm.ContextMenuMapController.prototype.MapContextMenus.AllianceWilderness) {
			uW.cm.ContextMenuMapController.prototype.MapContextMenus.AllianceWilderness[jj] = ["profile", "throne", "reinforce", "reinforcements", "message", "bookmark"];
		}
		uW.calcCityTypeFix = t.calcCityType_hook;
		// add the city status (Normal/Truce) to the tooltips
		uW.ptGetProvince = function (N) {
			return '<div class="thead" align="center"><b>' + uW.provincenames['p' + N.tileProvinceId] + '</b></div>';
		}
		if (FFVersion.substring(0, 4) > 16) {
			t.dispStatusMod = new CalterUwFunc('MapObject.prototype.populateSlots', [
				[/var\s*Q\s*=\s*"";/, ' var Q = ""; if (G) g += "<div>Status: " + G + "</div>";'],
				[/var\s*g\s*=""/, 'var g = ""; g+=ptGetProvince(N);']
			]);
		} else {
			t.dispStatusMod = new CalterUwFunc('MapObject.prototype.populateSlots', [
				[/var\s*Q\s*=\s*"";/, ' var Q = ""; if (G) g += "<div>Status: " + G + "</div>";'],
				['var g = "";', 'var g = "";g+=ptGetProvince(N);']
			]);
		}
		t.dispStatusMod.setEnable(Options.dispStatus);
	},
	setEnable: function (tf) {
		var t = mapinfoFix;
		t.calcButtonInfo.setEnable(tf);
	},
	setEnable2: function (tf) {
		var t = mapinfoFix;
		t.MapContextMenus.setEnable(tf);
	},
	setEnable3: function (tf) {
		var t = mapinfoFix;
		t.bookMarkMod.setEnable(tf);
	},
	setEnableDispStatus: function (tf) {
		var t = mapinfoFix;
		t.dispStatusMod.setEnable(tf);
	},
	calcCityType_hook: function (c, d) {
		if (Cities.byID[d.city.id] && c != 1)
			c = uW.cm.CITY_STATUS.MY_CITY_AND_NOT_CURRENT_CITY;
		return c;
	},
	isAvailable: function () {
		var t = mapinfoFix;
		return t.calcButtonInfo.isAvailable();
	},
	isAvailable2: function () {
		var t = mapinfoFix;
		return t.MapContextMenus.isAvailable();
	},
	isAvailable3: function () {
		var t = mapinfoFix;
		return t.bookMarkMod.isAvailable();
	},
	isAvailableDispStatus: function () {
		var t = mapinfoFix;
		return t.dispStatusMod.isAvailable();
	},
}
var ApothTimeFix = {
	apothFix: null,
	apothFixCB: null,
	init: function () {
		t = ApothTimeFix;
		t.apothFix = new CalterUwFunc('cm.RevivalModel.getRevivalStats', [
			[/&&\s*h\.isDruid/im, '|| h.id === 23'],
			[/try/im, 'var insert=getRevivalStats_hook(insert); var ff = insert.f; var equippedItems = insert.equippedItems; var dd = insert.d; g = (dd[k]?+(dd[k]["Cost"])||2000:2000) * j; try'],
			[/g\s*=\s*e\(k\)\s*\*\s*j,/im, ' '],
			[/hasFactionBonus\(\)/im, 'hasFactionBonus(equippedItems)'],
			[/\[7]\s*\*\s*j/im, '[7] * parseInt(j)'],
			[/o\s*-\s*\(o\s*\*/img, 'o / (1 +'],
			[/afford\s*:\s*f\(\)/im, 'afford : ff']
		]);
		t.apothFixCB = new CalterUwFunc('cm.RevivalModel.getRevivalStats', [
			[/o\s*-\s*o\s*\*\s*\(/im, 'o / (1 +'],
			[/o\s*-\s*o\s*\*\s*\cm/im, 'o / (1 + cm'],
			[/currentcityid\)\);/im, 'currentcityid)));']
		]); //fix for cometbird
		// TODO: seems like getMaximumTrainable breaks the bonus calculations in getRevivalStats - need to find a workaround
		uW.getRevivalStats_hook = t.hook;
		t.apothFix.setEnable(Options.fixApothTime);
		t.apothFixCB.setEnable(Options.fixApothTime);
	},
	setEnable: function (tf) {
		var t = ApothTimeFix;
		t.apothFix.setEnable(tf);
		t.apothFixCB.setEnable(tf);
	},
	isAvailable: function () {
		var t = ApothTimeFix;
		return t.apothFix.isAvailable();
		return t.apothFixCB.isAvailable();
	},
	hook: function (insert) {
		var t = ApothTimeFix;
		var insert = {};
		insert.f = parseInt(uW.seed.citystats["city" + uW.currentcityid].gold[0]);
		insert.d = uW.cm.WorldSettings.getSettingAsObject("APOTHECARY_COST");
		var equippedItems = equippedthroneItems(equippedItems);
		insert.equippedItems = equippedItems;
		return insert;
	},
}
var TRAetherCostFix = {
	aethercostFix: null,
	init: function () {
		t = TRAetherCostFix;
		t.aethercostFix = new CalterUwFunc('cm.ThronePanelController.calcCost', [
			[/if\(k\(/im, 'if(cm.ThronePanelController.isLastLevel('],
			[/F\.stones\.use\s*=\s*F\.stones\.total/im, 'F.stones.use = C'],
			[/if\(F\.stones\.use\s*==/im, 'if(F.stones.use >='],
			[/F\.gems\.use\s*=\s*b\(F\.stones\.total\s*-\s*C\)/im, 'var x = + (cm.WorldSettings.getSetting("TR_AETHERSTONE_CONVERSION_COST")), y; F.gems.use = Math.ceil((F.stones.total - C)/x)'],
			[/F\.gems\.use\s*=\s*b\(A\[E]\.Stones\)/im, 'var x = + (cm.WorldSettings.getSetting("TR_AETHERSTONE_CONVERSION_COST")), y; F.gems.use = Math.ceil((A[E].Stones)/x)'],
			[/if\s*\(k\(/im, 'if(cm.ThronePanelController.isLastLevel('], //fix for cometbird
			[/if\s*\(F\.stones\.use\s*==/im, 'if(F.stones.use >=']
		]); //fix for cometbird
		t.aethercostFix.setEnable(Options.fixTRAetherCost);
	},
	setEnable: function (tf) {
		var t = TRAetherCostFix;
		t.aethercostFix.setEnable(tf);
	},
	isAvailable: function () {
		var t = TRAetherCostFix;
		return t.aethercostFix.isAvailable();
	},
}
var mmbImageFix = {
	imageFix: null,
	init: function () {
		t = mmbImageFix;
		t.imageFix = new CalterUwFunc('cm.mww.mmb_share', [
			[/img\/items\/130/im, 'img/items/70/'],
			[/common_postToProfile\(\"85\"/im, 'template_data_85.img1=template_data_85.media[0].src; common_postToProfile(\"85\"']
		]);
		t.imageFix.setEnable(Options.fixMMBImage);
	},
	setEnable: function (tf) {
		var t = mmbImageFix;
		t.imageFix.setEnable(tf);
	},
	isAvailable: function () {
		var t = mmbImageFix;
		return t.imageFix.isAvailable();
	},
}
var MapDoubleClickFix = {
	doubleClickFix: null,
	init: function () {
		t = MapDoubleClickFix;
		//      t.doubleClickFix = new CalterUwFunc ('g_mapObject.populateSlots', [[/that\.controller\.onTileClick\(this\)/im,'setTimeout(that.controller.onTileClick(this),1000)}).off("dblclick", "**").on("dblclick", "a", function(){that.controller.onTileDblClick(this)']]);
		// replace with previous map mouse event handler coding
		t.doubleClickFix = new CalterUwFunc('g_mapObject.populateSlots', [
			[/map1.*Tooltip/img, 'map1 a").unbind("click").clicks(function(){setTimeout(that.controller.onTileClick(this),200)}, function(){that.controller.onTileDblClick(this)}).unbind("hover").hover(function(i){that.controller.onTileEnter(this, i)}, function(){removeTooltip']
		]);
		t.doubleClickFix.setEnable(Options.fixMapDblClick);
	},
	setEnable: function (tf) {
		var t = MapDoubleClickFix;
		t.doubleClickFix.setEnable(tf);
	},
	isAvailable: function () {
		var t = MapDoubleClickFix;
		return t.doubleClickFix.isAvailable();
	},
}
var ChatTimeFix = {
	ChatTime: null,
	init: function () {
		t = ChatTimeFix;
		uW.ptConvertTime = function (timestr) {
			time = timestr.split(/:/);
			var AddMins = 480 - parseInt(getDST(new Date()) / 60) - (new Date().getTimezoneOffset()); // convert from local pacific time
			var min = (parseInt(time[0]) * 60) + parseInt(time[1]) + AddMins;
			if (min >= 1440) {
				min = min - 1440;
			}
			return parseInt(min / 60) + ':' + ('00' + parseInt(min % 60).toString()).slice(-2);
		}
		t.ChatTime = new CalterUwFunc("Chat.getChat", [
			['rslt.data.newChats[i][j][1],', 'ptConvertTime(rslt.data.newChats[i][j][1]),'],
			['rslt.data.newChats[i][j][1],', 'ptConvertTime(rslt.data.newChats[i][j][1]),']
		]);
		t.ChatTime.setEnable(Options.fixChatTime);
	},
	setEnable: function (tf) {
		var t = ChatTimeFix;
		t.ChatTime.setEnable(tf);
	},
	isAvailable: function () {
		var t = ChatTimeFix;
		return t.ChatTime.isAvailable();
	},
}
var bypassMulti = {
	MultiBrowserBypass: null,
	init: function () {
		t = bypassMulti;
		//      t.MultiBrowserBypass = new CalterUwFunc ('update_seed_ajax', [[/if\(typeof\s*isCancelTraining/im,'var l_lastCallTime = 0; var reload_requests = 0; var l_callIntervalMin = 10; if(typeof isCancelTraining'],[/if\(rslt\.error_code\s*==\s*60\)/im,'return; if(rslt.error_code == 60)']]);
		t.MultiBrowserBypass = new CalterUwFunc('update_seed_ajax', [
			[/if\s*\(typeof\s*isCancelTraining/im, 'var l_lastCallTime = cm.l_lastCallTime; var reload_requests = cm.reload_requests; var l_callIntervalMin = cm.l_callIntervalMin; if(typeof isCancelTraining'],
			[/if\s*\(rslt\.error_code\s*==\s*60\)/im, 'return; if(rslt.error_code == 60)']
		]);
		t.MultiBrowserBypass.setEnable(Options.allowMultiBroswer);
	},
	setEnable: function (tf) {
		var t = bypassMulti;
		t.MultiBrowserBypass.setEnable(tf);
	},
	isAvailable: function () {
		var t = bypassMulti;
		return t.MultiBrowserBypass.isAvailable();
	},
}
var BarbRaidMarchPatch = {
	marchFix: null,
	init: function () {
		t = BarbRaidMarchPatch;
		if (FFVersion.substring(0, 4) > 16)
			t.marchFix = new CalterUwFunc('update_march', [
				[/D\.toTileLevel,\s*n,\s*M\)/im, 'D.toTileLevel, n, M, Math.floor(unixtime()+D.returnEta-D.marchUnixTime))']
			]);
		else
			t.marchFix = new CalterUwFunc('update_march', [
				['D.toTileLevel, n, M)', 'D.toTileLevel, n, M, Math.floor(unixtime()+D.returnEta-D.marchUnixTime))']
			]);
		t.marchFix.setEnable(Options.togRaidPatch);
	},
	setEnable: function (tf) {
		var t = BarbRaidMarchPatch;
		t.marchFix.setEnable(tf);
	},
	isAvailable: function () {
		var t = BarbRaidMarchPatch;
		return t.marchFix.isAvailable();
	},
}
var anticd = {
	isInited: false,
	KOCversion: '?',
	init: function () {
		if (this.isInited)
			return this.KOCversion;
		uW.cm.cheatDetector.detect = eval('function a (){}');
		var scripts = document.getElementsByTagName('script');
		for (var i = 0; i < scripts.length; i++) {
			if (scripts[i].src.indexOf('camelotmain') >= 0) {
				break;
			}
		}
		if (i < scripts.length) {
			var m = scripts[i].src.match(/camelotmain-(.*).js/);
			if (m)
				this.KOCversion = m[1];
		}
		this.isInited = true;
		// more coming soon :) 
	},
	getKOCversion: function () {
		return this.KOCversion;
	},
}
anticd.init();
/***
<img src='https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/avatars/25/m16.jpg'/>
<div class='content'>
  <div class='info'> 
    <a  class='nm' onclick='Chat.viewProfile(this,9640194,false);return false;'>Lord Sasuke_of_leaf</a>
    <span class='time'>17:17</span>
  </div>
  <div class='clearfix'>
    <div class='tx'>
      if ur really bored try it
    </div>
  </div>
</div>


<img src="https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/avatars/25/f9.jpg">
<div class="content">
  <div class="info">
    <a class="nm" onclick="Chat.viewProfile(this,3813948,false);return false;">Lady Aerwyn</a>
    <b style="color: rgb(165, 102, 49); font-size: 9px;"> says to the alliance:</b> 
    <span class="time">17:32</span>
  </div>
  <div class="clearfix">
    <div class="tx">
      ok, heading out to dinner with family... be back laters
    </div>
  </div>
</div>


WHISPER (chatDivContentHook) .....

<img src='https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/avatars/25/m1.jpg'/>
<div class='content'>
  <div class='info'>
    <a  class='nm' onclick='Chat.viewProfile(this,2282354,false);return false;'>Lord Jetson</a>
    <b style='color:#A56631;font-size:9px;'> whispers to you:</b> 
    <span class='time'>17:46</span>
  </div>
  <div class='clearfix'>
    <div class='tx'>
      test
    </div>
  </div>
</div>


<div class="chatwrap clearfix direct">
  <img src="https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/avatars/25/m1.jpg">
  <div class="content">
    <div class="info">
      <span class="nm">Lord Jetson</span>
      <b style="color: rgb(165, 102, 49); font-size: 9px;"> whispers to <a onclick="Chat.viewProfile(this,2282354); return false;" class="nm">jetson</a>:</b> 
      <span class="time">20:47</span>
    </div>
    <div class="clearfix">
      <div class="tx">
        test
      </div>
    </div>
  </div>
</div>
****/
var ChatStuff = {
	chatDivContentFunc: null,
	getChatFunc: null,
	leaders: {},
	init: function () {
		var t = ChatStuff;
		if (getMyAlliance()[0] > 0)
			t.getAllianceLeaders();
		// [[/h\s*=\s*cm.formatModel\.exe\(h,\s*true\);/,'h=chatDivContent_hook2(h);h = cm.formatModel.exe(h, true);'],
		t.chatDivContentFunc = new CalterUwFunc('Chat.chatDivContent', [
			['return f.join("")', 'var msg = f.join("");\n msg=chatDivContent_hook(msg,d);\n return msg;']
		]);
		uW.chatDivContent_hook = t.chatDivContentHook;
		uW.chatDivContent_hook2 = t.chatDivContentHook2;
		uW.ptChatIconClicked = t.e_iconClicked;
		uW.ptChatReportClicked = Rpt.FindReport;
		t.setEnable(Options.chatEnhance);
		if (Options.chatglobal) {
			document.getElementById('mod_comm_list1').className += ' ptChatGlobal ';
		}
		if (Options.chatalliance) {
			document.getElementById('mod_comm_list2').className += ' ptChatAlliance ';
		}
	},
	isAvailable: function () {
		var t = ChatStuff;
		t.chatDivContentFunc.isAvailable();
	},
	setEnable: function (tf) {
		var t = ChatStuff;
		t.chatDivContentFunc.setEnable(tf);
	},
	e_iconClicked: function (name) {
		if (document.getElementById('bot_comm_input'))
			var e = document.getElementById('bot_comm_input');
		else
			var e = document.getElementById('mod_comm_input');
		name = name.replace(/Ã‚Â°Ã‚Â°/g, "'");
		e.value = '@' + name + ' ';
	},
	chatDivContentHook2: function (msg) {
		var div = document.createElement('div');
		div.innerHTML = msg;
		div.innerText = div.innerHTML;
		msg = div.innerHTML.toString();
		return msg.htmlSpecialCharsDecode();
	},
	chatDivContentHook: function (msg, type) {
		var t = ChatStuff;
		var element_class = '';
		var alliance = false;
		var whisper = false;
		var m = /div class=\'info\'>.*<\/div>/im.exec(msg);
		if (m == null)
			return msg;
		if (type != null) {
			if (type.indexOf('says to the alliance') > 0) {
				alliance = true;
			}
			if (type.indexOf('whispers to you') > 0) {
				whisper = true;
			}
		}
		var whisp = m[0];
		if (whisper) {
			if (Options.chatwhisper) {
				element_class += ' ptChatWhisper ';
			}
		} else { //Global & Alliance
			if (Options.chatbold)
				element_class += ' ptChatBold ';
		}
		var suid = /viewProfile\(this,([0-9]+),false/i.exec(m[0]);
		if (!suid)
			suid = uW.tvuid;
		else
			suid = suid[1];
		if (Options.chatLeaders) {
			if (t.leaders[suid]) element_class += ' ptChat' + t.leaders[suid];
		}
		if (rats.indexOf(suid) >= 0 && suid != uW.tvuid) element_class += ' ptChatRat';
		if (scripters.indexOf(suid) >= 0) {
			//msg = msg.replace (/\bhttps\:\/\/[-a-z].*\'\/\>/i, ''+'\'\/\>');
			element_class += ' ptChatScripter';
		}
		if (Options.ChatIcons) {
			if (ChatIcons[suid]) {
				msg = msg.replace(/\bhttps\:\/\/[-a-z].*\'\/\>/i, "https://graph.facebook.com/" + ChatIcons[suid] + "/picture\'\/\>");
			} else {
				t.getfbid(suid);
			}
		}
		var fchar = new RegExp(atob('rQ=='), "g");
		msg = msg.replace(fchar, "").replace(/\&\#8232\;/g, "");
		if (alliance) {
			if (m[0].indexOf('My embassy has') >= 0 && Options.chatAttack)
				element_class = ' ptChatAttack';
			if (m[0].indexOf('My wilderness at') >= 0 && Options.chatAttack)
				element_class = ' ptChatAttack';
			//barcode style catch
			if (m[0].indexOf('..:.') >= 0 && Options.chatAttack) {
				element_class = ' ptChatAttack';
				var f = msg.indexOf('<div class=\'tx\'>');
				if (f >= 0) {
					msg = msg.replace(/<div class=\'tx\'>/, '<div class=\'tx\'><center><table border="1" cellpadding="0"><tr><td>')
					msg = msg.replace(/\|\|/g, '</td></tr><tr><td>');
					var a = msg.indexOf('</div>', f);
					msg = msg.slice(0, a) + '</td></tr></table></center>' + msg.slice(a);
				}
				msg = msg.replace(/\|/g, '<br>');
				msg = msg.replace('..:.', '');
				if (Options.enableTowerAlert) {
					AudioManager.setSource(SOUND_FILES.alert);
					AudioManager.play();
					setTimeout(function () {
						AudioManager.stop();
					}, 5000);
				}
			}
			if (m[0].indexOf('.::.') >= 0 && Options.chatAttack) {
				element_class = ' ptChatRecall';
				var f = msg.indexOf('<div class=\'tx\'>');
				if (f >= 0) {
					msg = msg.replace(/<div class=\'tx\'>/, '<div class=\'tx\'><center><table border="1" cellpadding="0"><tr><td>')
					msg = msg.replace(/\|\|/g, '</td></tr><tr><td>');
					var a = msg.indexOf('</div>', f);
					msg = msg.slice(0, a) + '</td></tr></table></center>' + msg.slice(a);
				}
				msg = msg.replace(/\|/g, '<br>');
				msg = msg.replace('.::.', '');
			}
		}
		//tables for other use
		if (m[0].indexOf(':::.') >= 0) {
			var f = msg.indexOf('<div class=\'tx\'>');
			if (f >= 0) {
				msg = msg.replace(/<div class=\'tx\'>/, '<div class=\'tx\'><center><table border="1" cellpadding="0"><tr><td>')
				msg = msg.replace(/\|\|/g, '</td></tr><tr><td>');
				var a = msg.indexOf('</div>', f);
				msg = msg.slice(0, a) + '</td></tr></table></center>' + msg.slice(a);
			}
			msg = msg.replace(/\|/g, '<br>');
			msg = msg.replace(':::.', '');
		}
		msg = msg.replace("class=\'content\'", "class='content " + element_class + "'");
		msg = msg.replace(/(\bReport\sNo\:\s([0-9]+))/g, '<a onclick=\'ptChatReportClicked($2,0)\'>$1</a>');
		msg = msg.replace(/(\bRpt\:([0-9]+))/g, '<a onclick=\'ptChatReportClicked($2,0)\'>$1</a>');
		msg = msg.replace(/#([0-9]+)#/g, '<a onclick=\'ptChatReportClicked($1,0)\'>$1</a>');
		
		if (m[0].indexOf('UID:') && unsafeWindow.btLoaded){ msg = msg.replace (/(\bUID:\s([0-9]+))/g, 'UID: $2 <a onclick=\'btMonitorExternalCallUID($2)\'>(Monitor)</a>'); }
		if (m[0].indexOf('TRC:') && unsafeWindow.btLoaded){ msg = msg.replace (/(\bTRC:\s([0-9]+))/g, 'UID: $2 <a onclick=\'btMonitorExternalCallUID($2)\'>(Monitor)</a>'); }

		msg = msg.replace(/(\byoutu([0-9a-z\.\?\/\=\-\_]+))/gi, '<a onclick=\"window.open\(\'http\:\/\/www\.$1\',\'_blank\'\)\">$1</a>');
		msg = msg.replace(/(\W)(bot)(\W)/gi, '$1<a onclick=window.open("http://code.google.com/p/koc-power-bot/")>$2</a>$3');
		msg = msg.replace(/(\W)(tools)(\W)/gi, '$1<a onclick=window.open("http://code.google.com/p/koc-power-tools/")>$2</a>$3');
		msg = msg.replace(/(\W)(tro)(\W)/gi, '$1<a onclick=window.open("http://code.google.com/p/ne0-kocbot/")>$2</a>$3');
		msg = msg.replace(/(\W)(kocmon)(\W)/gi, '$1<a onclick=window.open("http://kocmon.com/")>$2</a>$3');
		msg = msg.replace(/(\W)(forums)(\W)/gi, '$1<a onclick=window.open("http://community.kabam.com/forums/forumdisplay.php?4-Kingdoms-of-Camelot")>$2</a>$3');
		var m = /(Lord|Lady) (.*?)</im.exec(msg);
		if (m != null)
			m[2] = m[2].replace(/\'/g, "Ã‚Â°Ã‚Â°");
		msg = msg.replace(/<img (.*?>)/img, '<A onclick=\"ptChatIconClicked(\'' + m[2] + '\')\"><img class=\"ptChatIcon\" $1</a>');
		if (whisper && Options.enableWhisperAlert) {
			AudioManager.setSource(eval('SOUND_FILES.' + Options.whisperplay));
			AudioManager.play();
			setTimeout(function () {
				AudioManager.stop();
			}, 2500);
		}
		if (alliance) {
			if (whisp.indexOf('My embassy has') >= 0 && Options.enableTowerAlert) {
				AudioManager.setSource(SOUND_FILES.alert);
				AudioManager.play();
				setTimeout(function () {
					AudioManager.stop();
				}, 5000);
			}
			if (whisp.indexOf('My wilderness at') >= 0 && Options.enableTowerAlert) {
				AudioManager.setSource(SOUND_FILES.alert);
				AudioManager.play();
				setTimeout(function () {
					AudioManager.stop();
				}, 5000);
			}
			t.sendToIRC(suid, m[2], msg);
		}
		//lets remove the null character which could be a problem when copy and paste web addresses Null:"­",UnicodeLS:"&#8232;",
		return msg;
	},
	getAllianceLeaders: function () {
		var t = ChatStuff;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/allianceGetLeaders.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			loading: true,
			onSuccess: function (rslt) {
				if (rslt.officers) {
					for (uid in rslt.officers) {
						var user = rslt.officers[uid];
						t.leaders[user.userId] = user.type.substr(0, 4);
					}
				}
			},
			onFailure: function () {}
		});
	},
	getfbid: function (uid) {
		Tabs.AllianceList.fetchPlayerCourt(uid, ChatStuff.addfbuid);
	},
	addfbuid: function (rslt) {
		var t = ChatStuff;
		if (rslt.ok) {
			var uid = parseInt(rslt.playerInfo.userId);
			var fbid = parseInt(rslt.playerInfo.fbuid);
			ChatIcons[uid] = fbid;
			saveChatIconsOptions();
		}
	},
	sendToIRC: function (uid, name, msg) {
		Tabs.IRC.grabChat(uid, name, msg);
	},
}
var AudioManager = {
	player: null,
	volume: 100,
	type: 'html5',
	alertdiv: null,
	init: function () {
		var t = AudioManager;
		if (!!document.createElement("audio").canPlayType) {
			t.player = new Audio();
			t.type = 'html5';
			t.player.addEventListener("ended", function () {
				t.player.currentTime = 0
			}, false);
			t.setVolume(t.volume);
		} else {
			t.creatediv();
			t.type = 'swf';
		}
	},
	setVolume: function (vol) {
		var t = AudioManager;
		t.volume = vol;
		t.player.volume = t.volume * 0.01;
	},
	play: function () {
		var t = AudioManager;
		if (t.type == 'html5') {
			if (!t.player.paused) {
				t.stop();
			}
			t.player.play();
		} else {
			t.alertdiv.innerHTML = t.source;
		}
	},
	stop: function () {
		var t = AudioManager;
		if (t.type == 'html5') {
			t.player.pause();
			if (t.player.readyState === 4) {
				t.player.currentTime = 0
			}
		} else {
			t.alertdiv.innerHTML = '<b style=\'color: rgb(165, 102, 49); font-size: 9px;\'>Audio Alert Played</b>';
		}
	},
	pause: function () {
		var t = AudioManager;
		t.player.pause();
	},
	setSource: function (src) {
		var t = AudioManager;
		if (t.type == 'html5') {
			t.player.src = src.OGG;
			t.source = src.OGG;
		} else
			t.source = src.DEFAULT;
	},
	toggleMute: function () {
		var t = AudioManager;
		t.player.muted = !t.player.muted;
	},
	creatediv: function () {
		var t = AudioManager;
		var div = document.getElementsByTagName('div');
		for (var i = 0; i < div.length - 1; i++)
			if (div[i].className == 'mod_comm_forum')
				e = div[i];
		t.alertdiv = document.createElement("span");
		e.appendChild(t.alertdiv);
	},
}
var Rpt = {
	FindReport: function (rpId, pageNum) {
		var t = Rpt;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.rid = rpId;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/fetchReport.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				uW.jQuery('#viewreports_marchreport_'+rpId).removeClass('unread');
				var rpt = rslt['index'];
				rpt.Side0PlayerId = rslt['index']['side0PlayerId'];
				rpt.Side0AllianceId = rslt['index']['side0AllianceId'];
				rpt.Side1PlayerId = rslt['index']['side1PlayerId'];
				t.GetNames(rpId, rpt);
			},
			onFailure: function () {
				alert('kabam is having issues');
			},
		}, false);
	},
	GetNames: function (rpId, rpt) {
		var t = Rpt;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.uid = rpt.Side1PlayerId;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserGeneralInfo.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				rpt.side1Name = rslt['userInfo']['0']['name'];
				if (rpt.Side0PlayerId) {
					if (rpt.Side0PlayerId != 0) {
						var params = uW.Object.clone(uW.g_ajaxparams);
						params.uid = rpt.Side0PlayerId;
						new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserGeneralInfo.php" + uW.g_ajaxsuffix, {
							method: "post",
							parameters: params,
							onSuccess: function (rslt) {
								rpt.side0Name = rslt['userInfo']['0']['name'];
								t.GetReport(rpId, rpt);
							},
							onFailure: function () {
								alert('kabam is having issues');
							},
						}, false);
					} else {
						rpt.side0Name = "Enemy";
						t.GetReport(rpId, rpt);
					}
				} else {
					rpt.side0Name = "Enemy";
					t.GetReport(rpId, rpt);
				}
			},
			onFailure: function () {
				alert('kabam is having issues');
			},
		}, false);
	},
	GetReport: function (rpId, rpt) {
		var t = Rpt;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.side = 1;
		if (rpt.Side0PlayerId == uW.tvuid) {
			params.side = 0;
		} else {
			if (rpt.Side1PlayerId == uW.tvuid) {
				params.side = 1;
			} else {
				if (Seed.allianceDiplomacies) {
					if (parseInt(rpt.side0AllianceId) == parseInt(Seed.allianceDiplomacies.allianceId)) {
						params.side = 0;
					} else {
						params.side = 1;
					}
				}
			}
		}
		rpt.sideId = params.side;
		params.rid = rpId;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/fetchReport.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.error_code)
					alert('found report but kabam would not let me see it');
				else
					t.ReportPopup(rslt, rpt, rpId);
			},
			onFailure: function (rslt) {},
		}, false);
	},
	ReportPopup: function (rslt, rpt, reportId) {
		var t = Rpt;
		var popReport = null;
		//need the info from the list query
		var m = '';
		var unitImg = [];
		for (var ui in uW.cm.UNIT_TYPES) {
			i = uW.cm.UNIT_TYPES[ui];
			unitImg[i] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot//fb/e2/src/img/units/unit_' + i + '_30.jpg></TD><TD>' + uW.unitcost['unt' + i][0];
		}
		unitImg[53] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_53_30.png></TD><TD>Crossbows';
		unitImg[55] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_55_30.png></TD><TD>Trebuchet';
		unitImg[60] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_60_30.png></TD><TD>Trap';
		unitImg[61] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_61_30.png></TD><TD>Caltrops';
		unitImg[62] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_62_30.png></TD><TD>Spiked Barrier';
		for (var i = 101; i < 111; i++)
			unitImg[i] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot//fb/e2/src/img/units/unit_' + i + '_30.jpg></TD><TD>' + eval("uW.g_js_strings.monsterUnitsNames.m" + i);
		goldImg = GameIcons.goldImg + '</TD><TD>Gold';
		foodImg = GameIcons.foodImg + '</TD><TD>Food';
		woodImg = GameIcons.woodImg + '</TD><TD>Wood';
		stoneImg = GameIcons.stoneImg + '</TD><TD>Stone';
		oreImg = GameIcons.oreImg + '</TD><TD>Ore';
		astoneImg = GameIcons.astoneImg + '</TD><TD>Aetherstone';
		var unitImg2 = [];
		for (var ui in uW.cm.UNIT_TYPES) {
			i = uW.cm.UNIT_TYPES[ui];
			unitImg2[i] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot//fb/e2/src/img/units/unit_' + i + '_30.jpg></TD><TD>';
		}
		unitImg2[53] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_53_30.png></TD><TD>';
		unitImg2[55] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_55_30.png></TD><TD>';
		unitImg2[60] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_60_30.png></TD><TD>';
		unitImg2[61] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_61_30.png></TD><TD>';
		unitImg2[62] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/units/unit_62_30.png></TD><TD>';
		for (var i = 101; i < 111; i++)
			unitImg2[i] = '<img src=https://kabam1-a.akamaihd.net/silooneofcamelot//fb/e2/src/img/units/unit_' + i + '_30.jpg></TD><TD>';

		var trEffect = [];
		for (var k in uW.cm.thronestats.effects)
			trEffect[k] = uW.cm.thronestats.effects[k][1];
		var chEffect = ["hpm", "hpr", "dam", "arm", "str", "dex", "con", "hit", "cri", "blk"];
		var chEffectName = [uW.g_js_strings.champion_stats.hp, uW.g_js_strings.report_view.hp_remaining, uW.g_js_strings.champion_stats.damage, uW.g_js_strings.effects.name_203, uW.g_js_strings.effects.name_204, uW.g_js_strings.effects.name_205, uW.g_js_strings.effects.name_206, uW.g_js_strings.effects.name_207, uW.g_js_strings.effects.name_208, uW.g_js_strings.effects.name_209];
		rpt.marchName = '?';
		if (rpt.marchType == 0)
			rpt.marchName = 'Desertion';
		else if (rpt.marchType == 1)
			rpt.marchName = 'Transport';
		else if (rpt.marchType == 2)
			rpt.marchName = 'Reinforce';
		else if (rpt.marchType == 3) {
			if (rpt.sideId == 0)
				rpt.marchName = 'Anti-Scout';
			else
				rpt.marchName = 'Scout';
		} else if (rpt.marchType == 4) {
			if (rpt.sideId == 0)
				rpt.marchName = 'Defend';
			else
				rpt.marchName = 'Attack';
		} else if (rpt.marchType == 9)
			rpt.marchName = 'Raid';
		else if (rpt.marchType == 10)
			rpt.marchName = 'Dark Forest';
		if (parseInt(rpt.side0TileType) == 10)
			rpt.side0TileTypeText = 'Grass';
		else if (parseInt(rpt.side0TileType) == 11)
			rpt.side0TileTypeText = 'Lake';
		else if (parseInt(rpt.side0TileType) == 20)
			rpt.side0TileTypeText = 'Woods';
		else if (parseInt(rpt.side0TileType) == 30)
			rpt.side0TileTypeText = 'Hills';
		else if (parseInt(rpt.side0TileType) == 40)
			rpt.side0TileTypeText = 'Mount';
		else if (parseInt(rpt.side0TileType) == 50)
			rpt.side0TileTypeText = 'Plain';
		else if (parseInt(rpt.side0CityId) == 0)
			rpt.side0TileTypeText = 'Barb';
		else
			rpt.side0TileTypeText = 'City';

		function buildHeader() {
			var h = '<div id=reportHeader style="width:100%;">';
			h += '<div id=reportHeaderLeft style="float:left;width:30%;text-align:left;">';
			h += formatUnixTime(rpt.reportUnixTime, '24hour');
			h += '<br>';
			h += '<b>Glory Gained: ';
			if (rslt['glory'])
				h += addCommas(rslt['glory']);
			else
				h += '0';
			h += '</b></div>';
			h += '<div id=reportHeaderCenter style="float:left;width:40%;text-align:center;">';
			if (rpt.side0TileTypeText != 'City' && rpt.side0TileTypeText != 'Barb' && rpt.marchName == 'Attack') {
				if (rslt['conquered'] == 1)
					h += '<FONT color="#CC0000"><B>Conquered</B></font>';
				else if (rslt['conquered'] == 0)
					h += '<FONT color="#080"><B>Secured</B></font>';
			} else if ((rslt['winner'] == 1 && rpt.sideId == 0) || (rslt['winner'] == 0 && rpt.sideId == 1)) {
				if (rpt.marchName == 'Scout')
					h += '<FONT color="#CC0000"><B>Scouting Failed</B></font>';
				else
					h += '<FONT color="#CC0000"><B>You were defeated</B></font>';
			} else if (rslt['winner'] == 0 && rpt.sideId == 0)
				h += '<FONT color="#080"><B>You defended successfully!</B></font>';
			else if (rslt['winner'] == 1 && rpt.sideId == 1) {
				if (rpt.marchName == 'Scout')
					h += '<FONT color="#080"><B>Scouting Report</B></font>';
				else
					h += '<FONT color="#080"><B>You were victorious!</B></font>';
			}
			h += '</div>';
			h += '<div id=reportHeaderRight style="float:right;width:30%;text-align:right;">';
			h += 'Report No: ' + reportId;
			h += '<br><input id=ptpostreportid onclick="Chat.sendChat(\'/a Report No: ' + reportId + '\')" style="font-size:' + Options.overviewFontSize + 'px" type="submit" value="Post To Chat">';
			if ((rpt.side1PlayerId && (rpt.side1PlayerId == unsafeWindow.tvuid)) || (rpt.side0PlayerId && (rpt.side0PlayerId == unsafeWindow.tvuid))) { h += '&nbsp;<input id=ptDeleteReport style="color:#f00;font-size:' + Options.overviewFontSize + 'px" type="submit" value="Delete">'; } //Delete button for own reports
			h += '</div></div><div style="clear:both;"></div>';
			return h;
		}

		function buildBattle() {
			var m = '';
			//header
			m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Battle Results:</div>';
			//summary
			m += '<div id=battleSummaryContainer>';
			//summary - attacker
			m += '<div style="width:50%;float:left;">';
			m += '<B>Attackers:</B> ' + rpt.side1Name + ' (<A onclick="ptGotoMap(' + rpt.side1XCoord + ',' + rpt.side1YCoord + ')">' + rpt.side1XCoord + ',' + rpt.side1YCoord + '</a>) ';
			if (rslt['winner'] == 1)
				m += '<FONT color="#CC0000"><B> Winner</B></FONT>';
			m += '<br>';
			if (rpt.side1PlayerId && (rpt.side1PlayerId != 0)) m += 'UID:' + MonitorLinkUID(rpt.side1PlayerId) + '<br>';
			if (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')
				m += 'Knight Combat Skill: ' + rslt['s1KCombatLv'] + '<br>';
			if (rslt['fght']["s1"]) {
				var atkmight = 0;
				for (var ui in uW.cm.UNIT_TYPES) {
					i = uW.cm.UNIT_TYPES[ui];
					if (rslt['fght']["s1"]['u' + i]) {
						if (rslt['fght']["s1"]['u' + i][0] > rslt['fght']["s1"]['u' + i][1]) {
							atkmight += parseInt(uW.unitmight['unt' + i] * (parseInt(rslt['fght']["s1"]['u' + i][0]) - parseInt(rslt['fght']["s1"]['u' + i][1])));
						} else {
							atkmight += 0;
						}
					}
				}
			}
			if (rslt['s1spell'] && (rslt['s1spell'] != "0")) {
				m += 'Spell Used: <b>' + eval('uW.g_js_strings.spells.name_' + rslt['s1spell']) + '</b><br>';
			}
			m += 'Might Lost: ' + addCommas(atkmight) + '</div>';
			//summary - defender
			m += '<div style="width:50%;float:left;">';
			m += '<B>Defenders</B> ' + rpt.side0Name + ' (<A onclick="ptGotoMap(' + rpt.side0XCoord + ',' + rpt.side0YCoord + ')">' + rpt.side0XCoord + ',' + rpt.side0YCoord + '</a>) ';
			if (rslt['winner'] == 0)
				m += '<FONT color="#CC0000"><B> Winner</B></FONT>';
			m += '<br>';
			if (rpt.side0PlayerId && (rpt.side0PlayerId != 0)) m += 'UID:' + MonitorLinkUID(rpt.side0PlayerId) + '<br>';
			if (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')
				m += 'Knight Combat Skill: ' + rslt['s0KCombatLv'] + '<br>';
			if (rslt['s0spell'] && (rslt['s0spell'] != "0")) {
				m += 'Spell Used: <b>' + eval('uW.g_js_strings.spells.name_' + rslt['s0spell']) + '</b><br>';
			}
			if (rslt['fght']["s0"]) {
				var defmight = 0;
				if (rslt.overwhelmed) {
					for (var ui in uW.cm.UNIT_TYPES) {
						i = uW.cm.UNIT_TYPES[ui];
						if (rslt['fght']["s0"]['u' + i]) {
							if (rslt['fght']["s0"]['u' + i][0] > rslt['fght']["s0"]['u' + i][1]) {
								defmight += parseInt(uW.unitmight['unt' + i] * parseInt(rslt['fght']["s0"]['u' + i][0]));
							} else {
								defmight += 0;
							}
						}
					}
					for (var i = 53; i <= 55; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							if (rslt['fght']["s0"]['f' + i][0] > rslt['fght']["s0"]['f' + i][1]) {
								if (i == 53) {
									defmight += 4 * (parseInt(rslt['fght']["s0"]['f53'][0]))
								};
								if (i == 55) {
									defmight += 7 * (parseInt(rslt['fght']["s0"]['f55'][0]))
								};
							} else {
								defmight += 0;
							}
						}
					}
					for (var i = 60; i < 63; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							if (rslt['fght']["s0"]['f' + i][0] > rslt['fght']["s0"]['f' + i][1]) {
								if (i == 60) {
									defmight += 3 * (parseInt(rslt['fght']["s0"]['f60'][0]))
								};
								if (i == 61) {
									defmight += (parseInt(rslt['fght']["s0"]['f61'][0]))
								};
								if (i == 62) {
									defmight += 2 * (parseInt(rslt['fght']["s0"]['f62'][0]))
								};
							} else {
								defmight += 0;
							}
						}
					}
				} else {
					for (var ui in uW.cm.UNIT_TYPES) {
						i = uW.cm.UNIT_TYPES[ui];
						if (rslt['fght']["s0"]['u' + i]) {
							if (rslt['fght']["s0"]['u' + i][0] > rslt['fght']["s0"]['u' + i][1]) {
								defmight += parseInt(uW.unitmight['unt' + i] * (parseInt(rslt['fght']["s0"]['u' + i][0]) - parseInt(rslt['fght']["s0"]['u' + i][1])));
							} else {
								defmight += 0;
							}
						}
					}
					for (var i = 53; i <= 55; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							if (rslt['fght']["s0"]['f' + i][0] > rslt['fght']["s0"]['f' + i][1]) {
								if (i == 53) {
									defmight += 4 * (parseInt(rslt['fght']["s0"]['f53'][0]) - parseInt(rslt['fght']["s0"]['f53'][1]))
								};
								if (i == 55) {
									defmight += 7 * (parseInt(rslt['fght']["s0"]['f55'][0]) - parseInt(rslt['fght']["s0"]['f55'][1]))
								};
							} else {
								defmight += 0;
							}
						}
					}
					for (var i = 60; i < 63; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							if (rslt['fght']["s0"]['f' + i][0] > rslt['fght']["s0"]['f' + i][1]) {
								if (i == 60) {
									defmight += 3 * (parseInt(rslt['fght']["s0"]['f60'][0]) - parseInt(rslt['fght']["s0"]['f60'][1]))
								};
								if (i == 61) {
									defmight += (parseInt(rslt['fght']["s0"]['f61'][0]) - parseInt(rslt['fght']["s0"]['f61'][1]))
								};
								if (i == 62) {
									defmight += 2 * (parseInt(rslt['fght']["s0"]['f62'][0]) - parseInt(rslt['fght']["s0"]['f62'][1]))
								};
							} else {
								defmight += 0;
							}
						}
					}
				}
				m += 'Might Lost: ' + addCommas(defmight) + '<br>';
			}
			m += 'Rounds: ' + rslt['rnds'] + '<br>';
			if (rslt['darkForestConflict']) {
				m += 'The forests twisted and changed.';
			} else {
				if (rpt.side0TileTypeText != 'City' && rpt.sideId == 0) {
					if (rslt['conquered'] == 1)
						m += 'Attackers conquered the wilderness.';
					else if (rslt['conquered'] == 0)
						m += 'Attackers did not conquer the wilderness.';
				} else {
					if (rslt['wall']) {
						if (rslt['wall'] == 100)
							m += 'Attackers breached the walls.';
						else
							m += 'Attackers did not breach the walls. The walls are ' + rslt['wall'] + '% damaged';
					}
				}
			}
			m += '</div>';
			m += '</div>'; //end battlesummary div
			//troops
			m += '<div id=battleTroopsContainer style="clear:both">';
			//troops - attacker
			m += '<div style="width:50%;float:left;"><TABLE class=ptTab width=100%>';
			if (rslt['fght']["s1"]) {
				m += '<TR><TH></TH><TH align=left>Troops</TH><TH align=center>Fought</TH><TH align=center>Survived</TH><TH align=center>Killed</TH></TR>';
				for (var ui in uW.cm.UNIT_TYPES) {
					i = uW.cm.UNIT_TYPES[ui];
					if (rslt['fght']["s1"]['u' + i]) {
						if (rslt['fght']["s1"]['u' + i][0] > rslt['fght']["s1"]['u' + i][1]) {
							m += '<TR><TD>' + unitImg[i] + '</td>';
							m += '<TD align=center>' + addCommas(rslt['fght']["s1"]['u' + i][0]) + '</td>';
							m += '<TD align=center><font color="#CC0000">' + addCommas(rslt['fght']["s1"]['u' + i][1]) + '</font></td>';
							m += '<TD align=center><font color="#CC0000">(' + addCommas((rslt['fght']["s1"]['u' + i][0]) - (rslt['fght']["s1"]['u' + i][1])) + ')</font></td></tr>';
						} else {
							m += '<TR><TD>' + unitImg[i] + '</td>';
							m += '<TD align=center>' + addCommas(rslt['fght']["s1"]['u' + i][0]) + '</td>';
							m += '<TD align=center>' + addCommas(rslt['fght']["s1"]['u' + i][1]) + '</td></tr>';
						}
					}
				}
			}
			m += '</table></div>';
			//troops - defender
			m += '<div style="width:50%;float:left;">';
			m += '<TABLE class=ptTab width=100%>';
			if (rslt['fght']["s0"]) {
				if (rslt.overwhelmed) {
					m += '<TR><TH></TH><TH align=left>Troops</TH><TH align=center>Fought</TH><TH align=center>Survived</TH><TH align=center>Killed</TH></TR>';
					for (var ui in uW.cm.UNIT_TYPES) {
						i = uW.cm.UNIT_TYPES[ui];
						if (rslt['fght']["s0"]['u' + i] && (rslt['fght']["s0"]['u' + i][0] != null)) {
							m += '<TR><TD>' + unitImg[i] + '</td>';
							m += '<TD align=center>???</td>';
							m += '<TD align=center>???</td>';
							if (rslt['fght']["s0"]['u' + i][0] > 0) {
								m += '<TD align=center><FONT color="#CC0000">(' + addCommas(rslt['fght']["s0"]['u' + i][0]) + ')</FONT></td></tr>';
							} else {
								m += '<TD align=center>0</td></tr>';
							}
						}
					}
					for (var i = 53; i <= 55; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							m += '<TR><TD>' + unitImg[i] + '</td>';
							m += '<TD align=center>???</td>';
							m += '<TD align=center>???</td>';
							if (rslt['fght']["s0"]['f' + i][0] > 0) {
								m += '<TD align=center><FONT color="#CC0000">(' + addCommas(rslt['fght']["s0"]['f' + i][0]) + ')</FONT></td></tr>';
							} else {
								m += '<TD align=center>0</td></tr>';
							}
						}
					}
					for (var i = 60; i <= 63; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							m += '<TR><TD>' + unitImg[i] + '</td>';
							m += '<TD align=center>???</td>';
							m += '<TD align=center>???</td>';
							if (rslt['fght']["s0"]['f' + i][0] > 0) {
								m += '<TD align=center><FONT color="#CC0000">(' + addCommas(rslt['fght']["s0"]['f' + i][0]) + ')</font></td></tr>';
							} else {
								m += '<TD align=center>0</td></tr>';
							}
						}
					}
					for (var i = 101; i <= 110; i++) {
						if (rslt['fght']["s0"]['m' + i]) {
							m += '<TR><TD>' + unitImg[i] + '</td>';
							m += '<TD align=center>???</td>';
							m += '<TD align=center>???</td>';
							if (rslt['fght']["s0"]['m' + i][0] > 0) {
								m += '<TD align=center><FONT color="#CC0000">(' + addCommas(rslt['fght']["s0"]['m' + i][0]) + ')</font></td></tr>';
							} else {
								m += '<TD align=center>0</td></tr>';
							}
						}
					}
				} else {
					m += '<TR><TH></TH><TH align=left>Troops</TH><TH align=center>Fought</TH><TH align=center>Survived</TH><TH align=center>Killed</TH></TR>';
					for (var ui in uW.cm.UNIT_TYPES) {
						i = uW.cm.UNIT_TYPES[ui];
						if (rslt['fght']["s0"]['u' + i] && (rslt['fght']["s0"]['u' + i][0] != null)) {
							if (rslt['fght']["s0"]['u' + i][0] > rslt['fght']["s0"]['u' + i][1]) {
								m += '<TR><TD>' + unitImg[i] + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['u' + i][0]) + '</td>';
								m += '<TD align=center><FONT color="#CC0000">' + addCommas(rslt['fght']["s0"]['u' + i][1]) + '</FONT></td>';
								m += '<TD align=center><FONT color="#CC0000">(' + addCommas((rslt['fght']["s0"]['u' + i][0]) - (rslt['fght']["s0"]['u' + i][1])) + ')</FONT></td></tr>';
							} else {
								m += '<TR><TD>' + unitImg[i] + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['u' + i][0]) + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['u' + i][1]) + '</td></tr>';
							}
						}
					}
					for (var i = 53; i <= 55; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							if (rslt['fght']["s0"]['f' + i][0] > rslt['fght']["s0"]['f' + i][1]) {
								m += '<TR><TD>' + unitImg[i] + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['f' + i][0]) + '</td>';
								m += '<TD align=center><FONT color="#CC0000">' + addCommas(rslt['fght']["s0"]['f' + i][1]) + '</font></td>';
								m += '<TD align=center><FONT color="#CC0000">(' + addCommas((rslt['fght']["s0"]['f' + i][0]) - (rslt['fght']["s0"]['f' + i][1])) + ')</FONT></td></tr>';
							} else {
								m += '<TR><TD>' + unitImg[i] + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['f' + i][0]) + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['f' + i][1]) + '</td></tr>';
							}
						}
					}
					for (var i = 60; i <= 63; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							if (rslt['fght']["s0"]['f' + i][0] > rslt['fght']["s0"]['f' + i][1]) {
								m += '<TR><TD>' + unitImg[i] + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['f' + i][0]) + '</td>';
								m += '<TD align=center><FONT color="#CC0000">' + addCommas(rslt['fght']["s0"]['f' + i][1]) + '</font></td>';
								m += '<TD align=center><FONT color="#CC0000">(' + addCommas((rslt['fght']["s0"]['f' + i][0]) - (rslt['fght']["s0"]['f' + i][1])) + ')</FONT></td></tr>';
							} else {
								m += '<TR><TD>' + unitImg[i] + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['f' + i][0]) + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['f' + i][1]) + '</td></tr>';
							}
						}
					}
					for (var i = 101; i <= 110; i++) {
						if (rslt['fght']["s0"]['m' + i]) {
							if (rslt['fght']["s0"]['m' + i][0] > rslt['fght']["s0"]['m' + i][1]) {
								m += '<TR><TD>' + unitImg[i] + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['m' + i][0]) + '</td>';
								m += '<TD align=center><FONT color="#CC0000">' + addCommas(rslt['fght']["s0"]['m' + i][1]) + '</font></td>';
								m += '<TD align=center><FONT color="#CC0000">(' + addCommas((rslt['fght']["s0"]['m' + i][0]) - (rslt['fght']["s0"]['m' + i][1])) + ')</FONT></td></tr>';
							} else {
								m += '<TR><TD>' + unitImg[i] + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['m' + i][0]) + '</td>';
								m += '<TD align=center>' + addCommas(rslt['fght']["s0"]['m' + i][1]) + '</td></tr>';
							}
						}
					}
				}
			} else
				m += '<TR><TD>No Troops Defended</TD></TR>';
			m += '</table>';
			m += '</div>';
			m += '</div>'; //end troops div
			m += '<div style="clear:both"></div>';
			return m;
		}

		function buildTroopStats() {
			var m = '';
			if (rslt['bonus']) {
				//header
				m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=reportTroopStatsHdr class=ptdivLink >Troop Stats:&nbsp;<img id=reportTroopStatsArrow height="10" src="' + GameIcons.RightArrow + '"></a></div>';
				//stats
				m += '<div id=reportTroopStats class="ptdivHide">';
				//troops - attacker - stats
				m += '<div style="width:50%;float:left;">';
				if (rslt['fght']["s1"]) {
					for (var ui in uW.cm.UNIT_TYPES) {
						i = uW.cm.UNIT_TYPES[ui];
						if (rslt['fght']["s1"]['u' + i]) {
							m += '<div style="float:left;width:10%;clear:both;">' + unitImg2[i] + '</div>';
							m += '<div style="float:left;width:90%;"><table class=ptTab width=100%><tr><td style="width:33%;" align=left><font size="1"><b>HP: </b>' + addCommas(rslt['bonus']['mod']['s1']['u' + i]['hp'][1]) + '</font></td>';
							if (rslt['bonus']['mod']['s1']['u' + i]['atk']) m += '<TD style="width:33%;" align=left><font size="1"><b>Atk: </b>' + addCommas(rslt['bonus']['mod']['s1']['u' + i]['atk'][1]) + '</font></td>';
							if (rslt['bonus']['mod']['s1']['u' + i]['def']) m += '<TD style="width:33%;" align=left><font size="1"><b>Def: </b>' + addCommas(rslt['bonus']['mod']['s1']['u' + i]['def'][1]) + '</font></td></tr><tr>';
							if (rslt['bonus']['mod']['s1']['u' + i]['spd']) m += '<TD style="width:33%;" align=left><font size="1"><b>Spd: </b>' + addCommas(rslt['bonus']['mod']['s1']['u' + i]['spd'][1]) + '</font></td>';
							if (rslt['bonus']['mod']['s1']['u' + i]['rng']) m += '<TD style="width:33%;" align=left><font size="1"><b>Rng: </b>' + addCommas(rslt['bonus']['mod']['s1']['u' + i]['rng'][1]) + '</font></td>';
							if (rslt['bonus']['mod']['s1']['u' + i]['ld']) m += '<TD style="width:33%;" align=left><font size="1"><b>Ld: </b>' + addCommas(rslt['bonus']['mod']['s1']['u' + i]['ld'][1]) + '</font></td>';
							m += '</tr></table></div>';
						}
					}
				}
				m += '</div>';
				//troops - defender - stats
				m += '<div style="width:50%;float:left;">';
				if (rslt['fght']["s0"]) {
					for (var ui in uW.cm.UNIT_TYPES) {
						i = uW.cm.UNIT_TYPES[ui];
						if (rslt['fght']["s0"]['u' + i]) {
							if (rslt['fght']["s0"]['u' + i] && rslt['bonus']['mod']["s0"]['u' + i]) {
								m += '<div style="float:left;width:10%;clear:both;">' + unitImg2[i] + '</div>';
								m += '<div style="float:left;width:90%;"><table class=ptTab width=100%><tr><td style="width:33%;" align=left><font size="1"><b>HP: </b>' + addCommas(rslt['bonus']['mod']['s0']['u' + i]['hp'][1]) + '</font></td>';
								if (rslt['bonus']['mod']['s0']['u' + i]['atk']) m += '<TD style="width:33%;" align=left><font size="1"><b>Atk: </b>' + addCommas(rslt['bonus']['mod']['s0']['u' + i]['atk'][1]) + '</font></td>';
								if (rslt['bonus']['mod']['s0']['u' + i]['def']) m += '<TD style="width:33%;" align=left><font size="1"><b>Def: </b>' + addCommas(rslt['bonus']['mod']['s0']['u' + i]['def'][1]) + '</font></td></tr><tr>';
								if (rslt['bonus']['mod']['s0']['u' + i]['spd']) m += '<TD style="width:33%;" align=left><font size="1"><b>Spd: </b>' + addCommas(rslt['bonus']['mod']['s0']['u' + i]['spd'][1]) + '</font></td>';
								if (rslt['bonus']['mod']['s0']['u' + i]['rng']) m += '<TD style="width:33%;" align=left><font size="1"><b>Rng: </b>' + addCommas(rslt['bonus']['mod']['s0']['u' + i]['rng'][1]) + '</font></td>';
								m += '</tr></table></div>';
							}
						}
					}
					for (var i = 53; i <= 55; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							m += '<div style="float:left;width:10%;clear:both;">' + unitImg2[i] + '</div>';
							m += '<div style="float:left;width:90%;"><table class=ptTab width=100%><tr><td style="width:33%;" align=left><font size="1"><b>HP: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['hp'][1]) + '</font></td>';
							m += '<TD style="width:33%;" align=left><font size="1"><b>Atk: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['atk'][1]) + '</font></td>';
							m += '<TD style="width:33%;" align=left><font size="1"><b>Def: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['def'][1]) + '</font></td></tr><tr>';
							m += '<TD style="width:33%;" align=left><font size="1"><b>Spd: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['spd'][1]) + '</font></td>';
							m += '<TD style="width:33%;" align=left><font size="1"><b>Rng: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['rng'][1]) + '</font></td></tr></table></div>';
						}
					}
					for (var i = 60; i <= 63; i++) {
						if (rslt['fght']["s0"]['f' + i]) {
							m += '<div style="float:left;width:10%;clear:both;">' + unitImg2[i] + '</div>';
							m += '<div style="float:left;width:90%;"><table class=ptTab width=100%><tr><td style="width:33%;" align=left><font size="1"><b>HP: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['hp'][1]) + '</font></td>';
							m += '<td style="width:33%;" align=left><font size="1"><b>Atk: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['atk'][1]) + '</font></td>';
							m += '<TD style="width:33%;" align=left><font size="1"><b>Def: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['def'][1]) + '</font></td></tr><tr>';
							m += '<TD style="width:33%;" align=left><font size="1"><b>Spd: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['spd'][1]) + '</font></td>';
							m += '<TD style="width:33%;" align=left><font size="1"><b>Rng: </b>' + addCommas(rslt['bonus']['mod']['s0']['f' + i]['rng'][1]) + '</font></td></tr></table></div>';
						}
					}
					for (var i = 101; i <= 110; i++) {
						if (rslt['fght']["s0"]['m' + i]) {
							m += '<div style="float:left;width:10%;clear:both;">' + unitImg2[i] + '</div>';
							m += '<div style="float:left;width:90%;"><table class=ptTab width=100%><tr><td style="width:33%;" align=left><font size="1"><b>HP: </b>' + addCommas(rslt['bonus']['mod']['s0']['m' + i]['hp'][1]) + '</font></td>';
							if (rslt['bonus']['mod']['s0']['m' + i]['atk']) m += '<td style="width:33%;" align=left><font size="1"><b>Atk: </b>' + addCommas(rslt['bonus']['mod']['s0']['m' + i]['atk'][1]) + '</font></td>';
							if (rslt['bonus']['mod']['s0']['m' + i]['def']) m += '<TD style="width:33%;" align=left><font size="1"><b>Def: </b>' + addCommas(rslt['bonus']['mod']['s0']['m' + i]['def'][1]) + '</font></td></tr><tr>';
							if (rslt['bonus']['mod']['s0']['m' + i]['spd']) m += '<TD style="width:33%;" align=left><font size="1"><b>Spd: </b>' + addCommas(rslt['bonus']['mod']['s0']['m' + i]['spd'][1]) + '</font></td>';
							if (rslt['bonus']['mod']['s0']['m' + i]['rng']) m += '<TD style="width:33%;" align=left><font size="1"><b>Rng: </b>' + addCommas(rslt['bonus']['mod']['s0']['m' + i]['rng'][1]) + '</font></td>';
							m += '</tr></table></div>';
						}
					}
				}
				m += '</div>';
				m += '<div style="clear:both">&nbsp;</div>';
				m += '</div>'; //end reportTroopStats div
			}
			return m;
		}

		function buildChampDuel() {
			var m = '';
			if (rslt['champion_stats']) {
				s1name = rslt.champion_stats['s1'].nam;
				s1win = rslt.champion_stats['s1'].won;
				s0name = rslt.champion_stats['s0'].nam;
				s0win = rslt.champion_stats['s0'].won;
				if ((s1name != '') || (s0name != '')) {
					//header
					m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=reportChampDuelHdr class=ptdivLink >Champion Duel:&nbsp;<img id=reportChampDuelArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
					//summary
					m += '<div id=reportChampDuel>';
					m += '<div id=ChampStatContainer>';
					m += '<div style="width:50%;float:left;">';
					if (s1name == '') {
						s1name = 'No Champion';
					}
					if (s1win) {
						s1name += '&nbsp;(Winner)';
					}
					m += '<b>' + s1name + '</b><br>';
					for (var i = 1; i < chEffect.length; i++) {
						if (rslt.champion_stats['s1'][chEffect[i]]) {
							m += chEffectName[i] + ': ' + rslt.champion_stats['s1'][chEffect[i]] + '<br>';
						}
					}
					m += '</div>'; //attacker
					m += '<div style="width:50%;float:left;">';
					if (s0name == '') {
						s0name = 'No Champion';
					}
					if (s0win) {
						s0name += '&nbsp;(Winner)';
					}
					m += '<b>' + s0name + '</b><br>';
					for (var i = 1; i < chEffect.length; i++) {
						if (rslt.champion_stats['s0'][chEffect[i]]) {
							m += chEffectName[i] + ': ' + rslt.champion_stats['s0'][chEffect[i]] + '<br>';
						}
					}
					m += '</div>'; //defender
					m += '</div>'; //ChampStatContainer
					m += '<div style="clear:both">&nbsp;</div>';
					if (rslt.bonus) {
						if (rslt.bonus['cmp']) {
							m += '<div id=ChampAdjContainer style="clear:both">';
							m += '<div style="width:50%;float:left;">';
							// rather than fix the index for life, kabam remapped efects
							// 0:g_js_strings.effects.name_3,
							// 1:g_js_strings.effects.name_1,
							// 2:g_js_strings.effects.name_2,
							// 3:g_js_strings.commonstr.speed,
							// 4:g_js_strings.effects.name_5,
							// 5:g_js_strings.effects.name_6,
							// 6:g_js_strings.effects.name_7
							m += '<b>Champion Adjustments</b><br><TABLE class=ptTab width=100%>';
							for (var i = 0; i < 24; i++) {
								if (rslt.bonus['cmp']['s1'][i]) {
									if (i == 0) m += '<TR><TD colspan=4>Life: ' + rslt.bonus['cmp']['s1'][i] + '</TD></TR>';
									else if (i < 3) m += '<TR><TD colspan=4>' + trEffect[i] + ': ' + rslt.bonus['cmp']['s1'][i] + '</TD></TR>';
									else m += '<TR><TD colspan=4>' + trEffect[i + 1] + ': ' + rslt.bonus['cmp']['s1'][i] + '</TD></TR>';
								}
							}
							m += '</table></br>'
							m += '</div>'; //attacker
							m += '<div style="width:50%;float:left;">';
							m += '<b>Champion Adjustments</b><br><TABLE class=ptTab width=100%>';
							for (var i = 0; i < 24; i++) {
								if (rslt.bonus['cmp']['s0'][i]) {
									if (i == 0) m += '<TR><TD colspan=4>Life: ' + rslt.bonus['cmp']['s0'][i] + '</TD></TR>';
									else if (i < 3) m += '<TR><TD colspan=4>' + trEffect[i] + ': ' + rslt.bonus['cmp']['s0'][i] + '</TD></TR>';
									else m += '<TR><TD colspan=4>' + trEffect[i + 1] + ': ' + rslt.bonus['cmp']['s0'][i] + '</TD></TR>';
								}
							}
							m += '</table></br>'
							m += '</div>'; //defender
							m += '</div>'; //ChampAdjContainer
							m += '<div style="clear:both">&nbsp;</div>';
						}
					}
					m += '</div>'; //reportChampDuel
				}
			}
			return m;
		}

		function buildThroneStats() {
			var m = '';
			var LineStyle = '';
			var EndStyle = '';
			var GlobalEffects = [1, 2, 3, 4, 5, 6, 7, 17, 18, 19, 20, 21, 22, 23, 102, 103, 8, 9, 73];
			var AttackEffects = [1, 17, 24, 29, 34, 39, 44, 50, 56, 61, 102];
			var DefenceEffects = [2, 18, 25, 30, 35, 40, 45, 51, 104];
			var LifeEffects = [3, 19, 26, 31, 36, 41, 46, 52];
			var RangeEffects = [5, 21, 37, 42, 58, 63];
			var SpeedEffects = [4, 20, 27, 32, 47, 53, 57, 62];
			var AccuracyEffects = [7, 23, 28, 33, 38, 43, 49, 55, 60, 65];
			var OtherCombatEffects = [8, 9, 13, 14, 15, 16, 73];
			var OtherPVPEffects = [6, 22, 48, 54, 59, 64];
			var DebuffEffects = [17, 18, 19, 20, 22, 21, 23, 29, 39, 50, 54, 61, 30, 40, 51, 31, 41, 52, 42, 63, 64, 32, 53, 62];
			//header
			m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=reportThroneHdr class=ptdivLink >Throne Stats:&nbsp;<img id=reportThroneArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
			//summary
			m += '<div id=reportThrone>';
			m += '<div style="width:50%;float:left;">';
			if (rslt['s1ThroneRoomBoosts']) {
				for (var i = 1; i < trEffect.length + 1; i++) {
					if (rslt['s1ThroneRoomBoosts'][i]) {
						LineStyle = '<span style="color:#888;">';
						if (AttackEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#800;">';
						if (DefenceEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#008;">';
						if (LifeEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#088;">';
						if (RangeEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#080;">';
						if (SpeedEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#000;">';
						if (AccuracyEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#f80;">';
						if (OtherCombatEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#808;">';
						if (GlobalEffects.indexOf(parseInt(i)) > -1) {
							LineStyle = LineStyle + '<strong>';
							EndStyle = '</strong>' + EndStyle;
						}
						if (DebuffEffects.indexOf(parseInt(i)) > -1) {
							LineStyle = LineStyle + '<i>';
							EndStyle = '</i>' + EndStyle;
						}
						m += LineStyle + trEffect[i] + ': ' + rslt['s1ThroneRoomBoosts'][i] + '%' + EndStyle + '</span><br>';
					}
				}
			}
			m += '</div>'; //attacker
			m += '<div style="width:50%;float:left;">';
			if (rslt['s0ThroneRoomBoosts']) {
				for (var i = 1; i < trEffect.length + 1; i++) {
					if (rslt['s0ThroneRoomBoosts'][i]) {
						LineStyle = '<span style="color:#888;">';
						if (AttackEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#800;">';
						if (DefenceEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#008;">';
						if (LifeEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#088;">';
						if (RangeEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#080;">';
						if (SpeedEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#000;">';
						if (AccuracyEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#f80;">';
						if (OtherCombatEffects.indexOf(parseInt(i)) > -1)
							LineStyle = '<span style="color:#808;">';
						if (GlobalEffects.indexOf(parseInt(i)) > -1) {
							LineStyle = LineStyle + '<strong>';
							EndStyle = '</strong>' + EndStyle;
						}
						if (DebuffEffects.indexOf(parseInt(i)) > -1) {
							LineStyle = LineStyle + '<i>';
							EndStyle = '</i>' + EndStyle;
						}
						m += LineStyle + trEffect[i] + ': ' + rslt['s0ThroneRoomBoosts'][i] + '%' + EndStyle + '</span><br>';
					}
				}
			}
			m += '</div>'; //defender
			m += '<div style="clear:both">&nbsp;</div>';
			m += '</div>'; //throne container
			return m;
		}

		function buildBoosts() {
			var m = '';
			//header
			m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=reportBoostsHdr class=ptdivLink >Troop Adjustments:&nbsp;<img id=reportBoostsArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
			//summary
			m += '<div id=reportBoosts>';
			if (rslt['s1atkBoost'] || rslt['s1defBoost'] || rslt['s1lifeBoost'] || rslt['s0atkBoost'] || rslt['s0defBoost'] || rslt['s0lifeBoost']) {
				m += '<div style="width:50%;float:left;">';
				m += '<b>Item Boosts</b><br>';
				if (rslt['s1atkBoost'])
					m += 'Attack Boosted: ' + 100 * rslt['s1atkBoost'] + '%<br>';
				if (rslt['s1defBoost'])
					m += 'Defense Boosted: ' + 100 * rslt['s1defBoost'] + '%<br>';
				if (rslt['s1lifeBoost'])
					m += 'Health Boosted: ' + 100 * rslt['s1lifeBoost'] + '%<br>';
				m += '</div>'; //attacker
				m += '<div style="width:50%;float:left;">';
				m += '<b>Item Boosts</b><br>';
				if (rslt['s0atkBoost'])
					m += 'Attack Boosted: ' + 100 * rslt['s0atkBoost'] + '%<br>';
				if (rslt['s0defBoost'])
					m += 'Defense Boosted: ' + 100 * rslt['s0defBoost'] + '%<br>';
				if (rslt['s0lifeBoost'])
					m += 'Health Boosted: ' + 100 * rslt['s0lifeBoost'] + '%<br>';
				m += '</div>'; //defender
				m += '<div style="clear:both">&nbsp;</div>';
			}
			if (rslt['s1guardianAtkBoost'] || rslt['s1guardianDefBoost'] || rslt['s1guardianMarchBoost'] || rslt['s1guardianTrainBoost'] || rslt['s0guardianAtkBoost'] || rslt['s0guardianDefBoost'] || rslt['s0guardianMarchBoost'] || rslt['s0guardianTrainBoost']) {
				m += '<div style="width:50%;float:left;">';
				m += '<b>Guardian Boosts</b><br>';
				if (rslt['s1guardianAtkBoost'])
					m += 'Guardian Attack Boost: ' + parseFloat(100 * rslt['s1guardianAtkBoost']).toFixed(1) + '%<br>';
				if (rslt['s1guardianDefBoost'])
					m += 'Guardian Life Boost: ' + parseFloat(100 * rslt['s1guardianDefBoost']).toFixed(1) + '%<br>';
				if (rslt['s1guardianMarchBoost'])
					m += 'Guardian March Speed Boost: ' + parseFloat(100 * rslt['s1guardianMarchBoost']).toFixed(1) + '%<br>';
				if (rslt['s1guardianTrainBoost'])
					m += 'Guardian Training Boost: ' + parseFloat(100 * rslt['s1guardianTrainBoost']).toFixed(1) + '%<br>';
				m += '</div>'; //attacker
				m += '<div style="width:50%;float:left;">';
				m += '<b>Guardian Boosts</b><br>';
				if (rslt['s0guardianAtkBoost'])
					m += 'Guardian Attack Boost: ' + parseFloat(100 * rslt['s0guardianAtkBoost']).toFixed(1) + '%<br>';
				if (rslt['s0guardianDefBoost'])
					m += 'Guardian Life Boost: ' + parseFloat(100 * rslt['s0guardianDefBoost']).toFixed(1) + '%<br>';
				if (rslt['s0guardianMarchBoost'])
					m += 'Guardian March Speed Boost: ' + parseFloat(100 * rslt['s0guardianMarchBoost']).toFixed(1) + '%<br>';
				if (rslt['s0guardianTrainBoost'])
					m += 'Guardian Training Boost: ' + parseFloat(100 * rslt['s0guardianTrainBoost']).toFixed(1) + '%<br>';
				m += '</div>'; //defender
				m += '<div style="clear:both">&nbsp;</div>';
			}
			if (rslt.bonus) {
				if (rslt.bonus['tch'] || rslt.bonus['tch2']) {
					m += '<div style="width:50%;float:left;">';
					m += '<b>Research</b><br>';
					if (rslt.bonus['tch']) {
						for (var t1l in rslt.bonus.tch.s1) {
							var normaltech = '';
							if (t1l == 'hp') normaltech = 'Health';
							if (t1l == 'atk') normaltech = 'Attack';
							if (t1l == 'def') normaltech = 'Defense';
							if (t1l == 'spd') normaltech = 'Speed';
							if (t1l == 'rng') normaltech = 'Range';
							if (t1l == 'ld') normaltech = 'Load';
							if (normaltech != '')
								m += normaltech + ': ' + parseFloat(rslt.bonus.tch.s1[t1l] * 100).toFixed(0) + '%<br>';
						}
					}
					if (rslt.bonus['tch2']) {
						for (var t2l in rslt.bonus.tch2.s1) {
							var britontech = '';
							if (t2l == 'ic') britontech = 'Improved Cartography';
							if (t2l == 'id') britontech = 'Improved Defenses';
							if (t2l == 'sr') britontech = 'Strengthen Ranks';
							if (t2l == 'if') britontech = 'Improved Fletching';
							if (britontech != '')
								m += britontech + ': ' + parseFloat(rslt.bonus.tch2.s1[t2l] * 100).toFixed(0) + '%<br>';
						}
					}
					m += '</div>'; //attacker
					m += '<div style="width:50%;float:left;">';
					m += '<b>Research</b><br>';
					if (rslt.bonus['tch']) {
						for (var t1l in rslt.bonus.tch.s0) {
							var normaltech = '';
							if (t1l == 'hp') normaltech = 'Health';
							if (t1l == 'atk') normaltech = 'Attack';
							if (t1l == 'def') normaltech = 'Defense';
							if (t1l == 'spd') normaltech = 'Speed';
							if (t1l == 'rng') normaltech = 'Range';
							if (normaltech != '')
								m += normaltech + ': ' + parseFloat(rslt.bonus.tch.s0[t1l] * 100).toFixed(0) + '%<br>';
						}
					}
					if (rslt.bonus['tch2']) {
						for (var t2l in rslt.bonus.tch2.s0) {
							var britontech = '';
							if (t2l == 'ic') britontech = 'Improved Cartography';
							if (t2l == 'id') britontech = 'Improved Defenses';
							if (t2l == 'sr') britontech = 'Strengthen Ranks';
							if (t2l == 'if') britontech = 'Improved Fletching';
							if (britontech != '')
								m += britontech + ': ' + parseFloat(rslt.bonus.tch2.s0[t2l] * 100).toFixed(0) + '%<br>';
						}
					}
				}
				m += '</div>'; //defender
				m += '<div style="clear:both">&nbsp;</div>';
			}
			m += '</div>'; //boosts
			m += '<div style="clear:both"></div>';
			return m;
		}

		function handleLoot() {
			var m = '';
			if (rslt['loot']) {
				m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Loot:</div><TABLE style="width:100%;" class=ptTab>';
				m += '<TR><TD style="width:18%">' + GameIcons.goldImgTiny;
				if (rslt['loot'][0] > 0)
					m += addCommas(parseFloat(rslt['loot'][0]).toFixed(0)) + '</TD>';
				else
					m += '0</td>'
				m += '<TD style="width:18%">' + GameIcons.foodImgTiny;
				if (rslt['loot'][1] > 0)
					m += addCommas(parseFloat(rslt['loot'][1]).toFixed(0)) + '</TD>';
				else
					m += '0</TD>';
				m += '<TD style="width:18%">' + GameIcons.woodImgTiny;
				if (rslt['loot'][2] > 0)
					m += addCommas(parseFloat(rslt['loot'][2]).toFixed(0)) + '</TD>';
				else
					m += '0</td>'
				m += '<TD style="width:18%">' + GameIcons.stoneImgTiny;
				if (rslt['loot'][3] > 0)
					m += addCommas(parseFloat(rslt['loot'][3]).toFixed(0)) + '</TD>';
				else
					m += '0</TD>';
				m += '<TD style="width:18%">' + GameIcons.oreImgTiny;
				if (rslt['loot'][4] > 0)
					m += addCommas(parseFloat(rslt['loot'][4]).toFixed(0)) + '</TD>';
				else
					m += '0</td>'
				m += '<TD style="width:15%">' + GameIcons.astoneImgTiny;
				if (rslt['loot'][6] > 0)
					m += addCommas(parseFloat(rslt['loot'][6]).toFixed(0)) + '</TD>';
				else {
					m += '0 </TD>';
				}	
				m += '</tr>'
				if (rslt['loot'][5] || rslt['throneRoomDrop'] || rslt['equipmentDrop'] || rslt['lootJewel']) {
					var itemdetails = '';
					var thronedetails = '';
					var equipdetails = '';
					var jeweldetails = '';
					if (rslt['loot'][5] && JSON2.stringify(rslt['loot'][5]) != '[]') { // crapola
						for (var item in rslt['loot'][5]) {
							var amt="";
							if (rslt['loot'][5][item] != 1) { amt = ' ('+rslt['loot'][5][item]+')';}
							itemdetails += '<img width=20 src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/items/70/' + item + '.jpg>&nbsp;' + uW.itemlist['i' + item].name + amt +'&nbsp;&nbsp;&nbsp;';
						}
					}	
					if (rslt['throneRoomDrop']) {
						var TR = rslt['throneRoomDrop']; 
						var Quality = ['Simple','Common','Uncommon','Rare','Epic','Wondrous'];
						var thronename = Quality[TR.quality]+" "+TR.type+" of "+eval("unsafeWindow.g_js_strings.effects.suffix_"+TR.effects.slot5.id)+" ("+TR.faction+")";
						var thronetitle = "";
						for (var O in TR["effects"]) {
							var i = +(O.split("slot")[1]);
							id = TR["effects"]["slot" + i]["id"];
							tier = parseInt(TR["effects"]["slot" + i]["tier"]);
							level = TR["level"];
							p = unsafeWindow.cm.thronestats.tiers[id][tier];
							while (!p && (tier > 0)) {
								tier--;
								p = unsafeWindow.cm.thronestats.tiers[id][tier];
							}
							if (!p) continue; // can't find stats for tier
							if (TR["effects"]["slot"+i].fromJewel && (level > unsafeWindow.cm.thronestats.jewelGrowthLimit[TR["effects"]["slot"+i].quality])) {
								level = unsafeWindow.cm.thronestats.jewelGrowthLimit[TR["effects"]["slot"+i].quality]
							}
							Current = p.base + ((level * level + level) * p.growth * 0.5);
							thronetitle += eval("unsafeWindow.g_js_strings.effects.name_"+id)+ " " + Current+"%&nbsp;&nbsp;";
						}
						thronedetails += '<img width=20 src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/throne/icons/30/' + TR.faction + '/' + TR.faction + '_'+ TR.type +'_normal_1_'+ TR.quality+'.png title="' + thronetitle + '">&nbsp;' + thronename + '&nbsp;&nbsp;&nbsp;';
					}	
					if (rslt['equipmentDrop']) {
						var EQ = rslt['equipmentDrop']; 
						var Faction = ['briton','fey','druid'];
						var Quality = ['Simple','Common', 'Uncommon','Rare','Epic','Wondrous'];
						var ImgType = ["weapon", "chestArmor", "helmet", "feet", "shield", "ring", "ring1", "ring2", "pendant", "cloak"];
						var equipname = Quality[EQ.rarity]+" "+EQ.subtype+" of "+eval("unsafeWindow.g_js_strings.effects.suffix_"+EQ["effects"][5]["id"])+" ("+Faction[EQ.faction-1]+")";
						var equiptitle = "";
						for (var i in EQ["effects"]) {
							id = EQ["effects"][i]["id"];
							tier = parseInt(EQ["effects"][i]["tier"]);
							level = EQ["level"];
							p = unsafeWindow.cm.WorldSettings.getSettingAsObject("CE_EFFECTS_TIERS")[id+","+tier];
							while (!p && (tier > 0)) {
								tier--;
								p = unsafeWindow.cm.WorldSettings.getSettingAsObject("CE_EFFECTS_TIERS")[id+","+tier];
							}
							if (!p) continue; // can't find stats for tier
							Current = p.Base + ((level * level + level) * p.Growth * 0.5);
							equiptitle += eval("unsafeWindow.g_js_strings.effects.name_"+id)+ " " + Current+"%&nbsp;&nbsp;";
						}
						equipdetails += '<img width=20 src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/champion_hall/' + Quality[EQ.rarity].toLowerCase() + '_' + ImgType[EQ.type-1] + '_' + Faction[EQ.faction-1] + '_30x30.png title="' + equiptitle + '">&nbsp;' + equipname + '&nbsp;&nbsp;&nbsp;';
					}	
					if (rslt['lootJewel'] && JSON2.stringify(rslt['lootJewel']) != '[]') { // crapola CHECK THIS CODE!
						var ImgType = ["general_buff", "general_debuff", "unit_specific", "base_building"];
						var ImgQuality = ["cracked", "flawed", "cloudy", "subdued", "bright"];
						item = rslt['lootJewel'];
						var amt="";
						if (item.quantity != 1) { amt = ' ('+item.quantity+')';}
						jeweldetails += '<img width=20 src=https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/throne/icons/70/jewel_' + ImgType[unsafeWindow.cm.ThroneController.jewelType(item)] + '_' + ImgQuality[item.quality-1] + '.jpg>&nbsp;' + unsafeWindow.cm.ThroneController.jewelQualityName(item.quality)+" "+unsafeWindow.cm.ThroneController.getEffectName(item.id)+" Jewel" + amt +'&nbsp;&nbsp;&nbsp;';
					}	
					m += '<tr><td colspan=6>'+itemdetails+thronedetails+equipdetails+jeweldetails+'</TD></TR>';
				}
				m += '</TABLE><br>';
			}
			return m;
		}

		function handleTransportLoot() {
			var m = '';
			m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Loot:</div><TABLE style="width:100%;" class=ptTab>';
			m += '<TR><TD style="width:18%">' + GameIcons.goldImgTiny;
			if (rslt['gold'] > 0)
				m += addCommas(rslt['gold']) + '</TD>';
			else
				m += '0</td>'
			m += '<TD style="width:18%">' + GameIcons.foodImgTiny;
			if (rslt['resource1'] > 0)
				m += addCommas(rslt['resource1']) + '</TD>';
			else
				m += '0</TD>';
			m += '<TD style="width:18%">' + GameIcons.woodImgTiny;
			if (rslt['resource2'] > 0)
				m += addCommas(rslt['resource2']) + '</TD>';
			else
				m += '0</td>'
			m += '<TD style="width:18%">' + GameIcons.stoneImgTiny;
			if (rslt['resource3'] > 0)
				m += addCommas(rslt['resource3']) + '</TD>';
			else
				m += '0</TD>';
			m += '<TD style="width:18%">' + GameIcons.oreImgTiny;
			if (rslt['resource4'] > 0)
				m += addCommas(rslt['resource4']) + '</TD>';
			else
				m += '0</td>'
			m += '<TD style="width:15%">' + GameIcons.astoneImgTiny;
			if (rslt['resource5'] > 0)
				m += addCommas(rslt['resource5']) + '</TD>';
			else
				m += '0</TD>';
			m += '</tr>'
			m += '</TABLE><br>';
			return m;
		}

		function deleteThisRpt(testing) {
			var side0 = '';
			var side1 = '';
			if (rpt.sideId == 1) side1 = rpt.marchReportId;
			if (rpt.sideId == 0) side0 = rpt.marchReportId;
			var params = uW.Object.clone(uW.g_ajaxparams);
			params.s0rids = side0;
			params.s1rids = side1;
			params.cityrids = '';
			new MyAjaxRequest(uW.g_ajaxpath + "ajax/deleteCheckedReports.php" + uW.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					if (rslt.ok) {
						if (t.popReport.onClose) {
							t.popReport.onClose();
						}
						t.popReport.destroy();
						t.popReport = null;
						unsafeWindow.Messages.listReports();
					}
				},
				onFailure: function () {
					if (notify) {
						notify('AJAX ERROR');
					}
				},
			});
			//alert(rpt.toSource());
		}

		function handleunts() { // Troops sent to Reinforce or troops found on a Scout (also show destination for transports)
			var m = '';
			//header
			if (rpt.marchName == 'Reinforce')
				m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Reinforcement:</div>';
			else
			if (rpt.marchName == 'Transport')
				m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Destination:</div>';
			else
				m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Scout Report:</div>';
			//summary
			m += '<div id=scoutSummaryContainer>';
			//summary - troops
			m += '<div style="width:50%;float:left;">';
			if (rpt.marchName == 'Reinforce')
				m += '<B>Ally:</B> ' + rpt.side1Name + ' (<A onclick="ptGotoMap(' + rpt.side1XCoord + ',' + rpt.side1YCoord + ')">' + rpt.side1XCoord + ',' + rpt.side1YCoord + '</a>)<br>';
			if (rslt['unts'] != undefined) {
				m += '<TABLE class=ptTab>';
				for (var ui in uW.cm.UNIT_TYPES) {
					i = uW.cm.UNIT_TYPES[ui];
					if (rslt['unts']['u' + i] != undefined)
						m += '<TR><TD>' + unitImg[i] + '</TD><TD align=right>' + addCommas(rslt['unts']['u' + i]) + '</TD></TR>';
				}
				m += '</TABLE>';
			}
			m += '&nbsp;</div>';
			//summary - city and defences
			m += '<div style="width:50%;float:left;">';
			if ((rpt.marchName == 'Reinforce') || (rpt.marchName == 'Transport'))
				m += '<B>Destination</B> ' + rpt.side0Name + ' (<A onclick="ptGotoMap(' + rpt.side0XCoord + ',' + rpt.side0YCoord + ')">' + rpt.side0XCoord + ',' + rpt.side0YCoord + '</a>)<br>';
			else {
				m += '<TABLE class=ptTab width=100%>';
				m += '<TR><TD>' + rpt.side0Name + ' (<A onclick="ptGotoMap(' + rpt.side0XCoord + ',' + rpt.side0YCoord + ')">' + rpt.side0XCoord + ',' + rpt.side0YCoord + '</a>)</td></tr>';
				m += '<TR><TD>UID: ' + MonitorLinkUID(rpt.side0PlayerId)+'</td></tr>';
				if (rslt['lstlgn']) {
					if (!rslt['lstlgn'])
						m += '<TR><TD>Last Login: Not recorded</TD></TR>';
					else
						m += '<TR><TD>Last Login: ' + formatUnixTime(rslt['lstlgn']) + '</TD></TR>';
				}
				m += '<TR><TD>Marshall Combat: ';
				if (rslt['knt'])
					m += rslt['knt']['cbt'];
				else
					m += 'None';
				m += '</TD></TR>';
				if (rslt['pop'])
					m += '<TR><TD>Population: ' + addCommas(rslt['pop']) + '</TD></TR>';
				if (rslt['hap'])
					m += '<TR><TD>Happiness: ' + addCommas(rslt['hap']) + '</TD></TR></TABLE>';
				m += '</TD></TR></TABLE><br>';
				m += handlefrt();
			}
			m += '</div>';
			m += '</div>'; //end scoutsummary div
			m += '<div style="clear:both"></div>';
			return m;
		}

		function buildResearch() {
			var m = '';
			//header
			m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=reportResearchHdr class=ptdivLink >Buildings and Research:&nbsp;<img id=reportResearchArrow height="10" src="' + GameIcons.RightArrow + '"></a></div>';
			//summary
			m += '<div id=reportResearch class=ptdivHide>';
			if (rslt['blds']) {
				m += '<div style="width:50%;float:left;">';
				if (rslt['blds']) {
					m += '<TABLE class=ptTab><TR><TH colspan=2 align=left>Buildings</TH></TR>';
					for (var bi in rslt['blds'])
						if ((bi != 'b1') && (bi != 'b2') && (bi != 'b3') && (bi != 'b4')) {
							m += handleblds(bi.split("b")[1]);
						}	
					m += '</TABLE>';
				}
				if (rslt['blds']['b1'] || rslt['blds']['b2'] || rslt['blds']['b3'] || rslt['blds']['b4']) {
					m += '<TABLE class=ptTab><TR><TH colspan=2 align=left>Fields</TH></TR>';
					for (var i = 1; i < 5; i++)
						if (rslt['blds']['b' + i])
							m += handleblds(i);
					m += '</TABLE>';
				}
				m += '</div>'; 
			}
			if (rslt['tch'] || rslt['tch2']) {
				m += '<div style="width:50%;float:left;">';
				if (rslt['tch']) {
					m += '<TABLE class=ptTab><TR><TH colspan=2 align=left>Research</TH></TR>';
					for (var tl in rslt.tch) {
						tid = /[0-9]+/.exec(tl);
						m += '<TR><TD>' + uW.techcost['tch' + tid[0]][0] + '</TD><TD align=right>' + rslt.tch[tl] + '</TD></TR>';
					}
					m += '</TABLE>';
				}
				if (rslt['tch2']) {
					m += '<TABLE class=ptTab><TR><TH colspan=2 align=left>Briton Research</TH></TR>';
					for (var tl in rslt.tch2) {
						tid = /[0-9]+/.exec(tl);
						m += '<TR><TD>' + uW.techcost2['tch' + tid[0]][0] + '</TD><TD align=right>' + rslt.tch2[tl] + '</TD></TR>';
					}
					m += '</TABLE>';
				}
				m += '</div>'; 
				m += '<div style="clear:both">&nbsp;</div>';
			}	
			m += '</div>';
			return m;
		}
		
		function handlersc(scout) { // Resources brought with reinforcements or found on a Scout
			var m = '';
			if (rslt['rsc'] != undefined) {
				if (rslt['rsc']['r1'] > 0 || rslt['rsc']['r2'] > 0 || rslt['rsc']['r3'] > 0 || rslt['rsc']['r4'] > 0) {
					if (rpt.marchName == 'Reinforce')
						m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Goodies Brought:</div><TABLE style="width:100%;" class=ptTab>';
					else
						m += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Goodies Found:</div><TABLE style="width:100%;" class=ptTab>';
					m += '<TR><TD style="width:18%">' + GameIcons.goldImgTiny;
					if (rslt['gld'] > 0)
						m += addCommas(parseFloat(rslt['gld']).toFixed(0)) + '</TD>';
					else
						m += '0</td>';
					m += '<TD style="width:18%">' + GameIcons.foodImgTiny;
					if (rslt['rsc']['r1'] > 0)
						m += addCommas(parseFloat(rslt['rsc']['r1']).toFixed(0)) + '</TD>';
					else
						m += '0</td>';
					m += '<TD style="width:18%">' + GameIcons.woodImgTiny;
					if (rslt['rsc']['r2'] > 0)
						m += addCommas(parseFloat(rslt['rsc']['r2']).toFixed(0)) + '</TD>';
					else
						m += '0</td>';
					m += '<TD style="width:18%">' + GameIcons.stoneImgTiny;
					if (rslt['rsc']['r3'] > 0)
						m += addCommas(parseFloat(rslt['rsc']['r3']).toFixed(0)) + '</TD>';
					else
						m += '0</td>';
					m += '<TD style="width:18%">' + GameIcons.oreImgTiny;
					if (rslt['rsc']['r4'] > 0)
						m += addCommas(parseFloat(rslt['rsc']['r4']).toFixed(0)) + '</TD>';
					else
						m += '0</td>';
					if (rslt['rsc']['r5'] > 0) {
						m += '<TD style="width:15%">' + GameIcons.astoneImgTiny;
						m += addCommas(parseFloat(rslt['rsc']['r5']).toFixed(0)) + '</TD>';
					}	
					else {
						if (scout != true) {
							m += '<TD style="width:15%">' + GameIcons.astoneImgTiny + '0</td>';
						}
					}	
					m += '</TABLE>';
				}
			}
			return m;
		}

		function handlefrt() { // Fortifications found on a Scout
			var hfrt = '',
				th = '',
				tc = '',
				tf = '';
			if (rslt['frt']) {
				if (rslt['frt']['f53'] != undefined || rslt['frt']['f55'] != undefined || rslt['frt']['f60'] != undefined || rslt['frt']['f61'] != undefined || rslt['frt']['f62'] != undefined) {
					th = '<TABLE class=ptTab><TR><TH colspan=3 align=left>Defenses Found</TH></TR>';
					if (rslt['frt']['f53'] != undefined)
						tc += '<TR><TD>' + unitImg[53] + '</TD><TD align=right>' + addCommas(rslt['frt']['f53']) + '</TD></TR>';
					if (rslt['frt']['f55'] != undefined)
						tc += '<TR><TD>' + unitImg[55] + '</TD><TD align=right>' + addCommas(rslt['frt']['f55']) + '</TD></TR>';
					if (rslt['frt']['f60'] != undefined)
						tc += '<TR><TD>' + unitImg[60] + '</TD><TD align=right>' + addCommas(rslt['frt']['f60']) + '</TD></TR>';
					if (rslt['frt']['f61'] != undefined)
						tc += '<TR><TD>' + unitImg[61] + '</TD><TD align=right>' + addCommas(rslt['frt']['f61']) + '</TD></TR>';
					if (rslt['frt']['f62'] != undefined)
						tc += '<TR><TD>' + unitImg[62] + '</TD><TD align=right>' + addCommas(rslt['frt']['f62']) + '</TD></TR>';
					tf = '</TABLE>';
				}
			}
			if (tc != '')
				hfrt = th + tc + tf;
			return hfrt;
		}

		function handleblds(bType) {
			if (rslt['blds']) {
				var blds = rslt['blds']['b' + bType];
				b = '<TR><TD>';
				arField = [], firstbld = true;
				b += unsafeWindow.buildingcost['bdg'+bType][0];
				b += '</TD><TD>';
				for (var i = 1; i <= 12; i++)
					arField[i] = 0;
				for (var i = 0; i < blds.length; i++)
					arField[blds[i]]++
				for (var i = 12; i > 0; i--) {
						if (arField[i] > 0) {
							if (firstbld)
								firstbld = false;
							else
								b += ', ';
							if (arField[i] > 1)
								b += arField[i] + ' x ';
							b += ' ' + i;
						}
					}
				b += '</TD></TR>';
				return b;
			}
		}
		if (t.popReport) {
			t.popReport.show(false);
			if (t.popReport.onClose) t.popReport.onClose();
			t.popReport.destroy();
			t.popReport = null;
		}
		if (rpt.marchName == 'Reinforce') {
			t.popReport = new CPopup('pbReportPopup', reportpos.x, reportpos.y, 750, 240, true, function () {
				reportpos = t.popReport.getLocation();
				clearTimeout(1000);
			});
			m += '<DIV style="height:185px">';
		} else if (rpt.marchName == 'Transport') {
			t.popReport = new CPopup('pbReportPopup', reportpos.x, reportpos.y, 750, 240, true, function () {
				reportpos = t.popReport.getLocation();
				clearTimeout(1000);
			});
			m += '<DIV style="height:185px">';
		} else if (rpt.marchName == 'Scout' && rslt['winner'] == 1 && rpt.sideId == 1) {
			t.popReport = new CPopup('pbReportPopup', reportpos.x, reportpos.y, 750, 680, true, function () {
				reportpos = t.popReport.getLocation();
				clearTimeout(1000);
			});
			m += '<DIV style="max-height:645px; height:645px; overflow-y:scroll">';
		} else {
			t.popReport = new CPopup('pbReportPopup', reportpos.x, reportpos.y, 750, 680, true, function () {
				reportpos = t.popReport.getLocation();
				clearTimeout(1000);
			});
			m += '<DIV style="max-height:645px; height:645px; overflow-y:scroll">';
		}
		if ((reportpos.x == -999) && (reportpos.y == -999)) {
			t.popReport.centerMe(mainPop.getMainDiv());
		}
		m += buildHeader();
		if (rpt.marchName == 'Transport') { // Transport
			m += handleTransportLoot();
			m += handleunts();
		}
		m += handleLoot();
		if (rpt.marchName == 'Reinforce') {
			m += handlersc(false);
			m += handleunts();
		}
		if (rpt.marchName == 'Scout' && rslt['winner'] == 1) {
			m += handlersc(true);
			m += handleunts();
			m += buildResearch();
		}
		if (rslt['fght']) {
			m += buildBattle();
			m += buildTroopStats();
			m += buildChampDuel();
			m += buildThroneStats();
			m += buildBoosts();
		}
		m += '</DIV>';
		t.popReport.getMainDiv().innerHTML = m;
		if (document.getElementById('ptDeleteReport')) {
			document.getElementById('ptDeleteReport').addEventListener('click', function () {
				deleteThisRpt(rslt, rpt);
			}, false);
		}	
		t.popReport.getTopDiv().innerHTML = '<DIV align=center><B>' + rpt.marchName + ' Report</B></DIV>';
		if (document.getElementById('reportTroopStatsHdr')) {
			document.getElementById('reportTroopStatsHdr').addEventListener('click', function () {
				ToggleDivDisplay(500, 500, "reportTroopStats");
			}, false);
		}
		if (document.getElementById('reportChampDuelHdr')) {
			document.getElementById('reportChampDuelHdr').addEventListener('click', function () {
				ToggleDivDisplay(500, 500, "reportChampDuel");
			}, false);
		}
		if (document.getElementById('reportThroneHdr')) {
			document.getElementById('reportThroneHdr').addEventListener('click', function () {
				ToggleDivDisplay(500, 500, "reportThrone");
			}, false);
		}
		if (document.getElementById('reportBoostsHdr')) {
			document.getElementById('reportBoostsHdr').addEventListener('click', function () {
				ToggleDivDisplay(500, 500, "reportBoosts");
			}, false);
		}
		if (document.getElementById('reportResearchHdr')) {
			document.getElementById('reportResearchHdr').addEventListener('click', function () {
				ToggleDivDisplay(500, 500, "reportResearch");
			}, false);
		}
		t.popReport.show(true);
	},
};
/********************** Tournament Tab *******************************************/
// useless :( ......
/***/
/***
RSLT:
  (string) s0Kid = 57526
  (string) s1Kid = 35216
  (string) s1KLv = 1
  (number) s0KCombatLv = 0
  (string) s1KCombatLv = Higher
  (object) fght = [object Object]
    (object) s1 = [object Object]
      (array) u2 = 89000,89000
        (string) 0 = 89000
        (number) 1 = 89000

      (array) u9 = 1000,1000
        (string) 0 = 1000
        (number) 1 = 1000


  (number) rnds = 3
  (number) winner = 1
  (number) wall = 100
  (number) s0atkBoost = 0
  (number) s0defBoost = 0
  (number) s1atkBoost = 0
  (number) s1defBoost = 0.2
  (boolean) conquered = false
  (array) loot = 111139,763000,643000,78000,138000
    (number) 0 = 111139
    (number) 1 = 763000
    (number) 2 = 643000
    (number) 3 = 78000
    (number) 4 = 138000

  (string) errorMsg = Something has gone wrong! Please try again, or refresh if this message reappear
***/
Tabs.Tournament = {
	tabOrder: 100,
	cont: null,
	displayTimer: null,
	init: function (div) {
		var t = Tabs.Tournament;
		t.cont = div;
		t.tourneyPos = 0;
		uW.ptSetTourneyPos = function (tab) {
			var t = Tabs.Tournament;
			t.tourneyPos = tab;
			t.show();
		};
	},
	hide: function () {
		var t = Tabs.Tournament;
		clearTimeout(t.displayTimer);
	},
	getContent: function () {
		var t = Tabs.Tournament;
		return t.cont;
	},
	getTrainTime: function (n, p, cid) {
		if (p < 1) {
			return 0
		}
		var h =  + (uW.unitcost["unt" + n][7]) * p,
		c,
		f = {},
		g = Seed.buildings["city" + cid],
		b = {},
		e = Seed.knights["city" + cid],
		l,
		q = Seed.leaders["city" + cid];
		f.barracks = 0;
		f.workshop = 0;
		f.stable = 0;
		f.tech = 0;
		f.knight = 0;
		f.ultimate = 0;
		uW.jQuery.each(g, function (v, u) {
			u.id =  + (u[0]);
			u.level =  + (u[1]);
			var t = (parseInt(n) == 13 || parseInt(n) == 14 || parseInt(n) == 15);
			u.isPrestige = (parseInt(u[2]) >= 100 && parseInt(u[2]) <= 105);
			if ((u.id === 13 || u.id === 22 || u.id === 24 || u.id === 26) && u.level > 0) {
				if ((t && u.isPrestige) || (!t && !u.isPrestige)) {
					f.barracks += (u.level + 9)
				}
			}
			if (u.id === 16 && u.level > 0) {
				if ( + (n) >= 9 &&  + (n) < 13) {
					f.workshop = u.level
				}
			}
			if (u.id === 17 && u.level > f.stable) {
				if ( + (n) >= 7 &&  + (n) < 13) {
					f.stable = u.level
				}
			}
		});
		c = f.barracks / 10;
		h = Math.max(1, Math.ceil(h / c));
		c = 1;
		if (e) {
			l = e["knt" + q.combatKnightId];
			if (l) {
				f.knight = ( + (l.combatBoostExpireUnixtime) - uW.unixtime() > 0) ? (l.combat * 1.25) : l.combat
			} else {
				f.knight = 0
			}
		}
		if (Seed.tech) {
			f.tech = Seed.tech.tch5
		}
		f.ultimate = f.workshop + f.stable + f.tech;
		c = c * (1 + (0.1 * f.ultimate) + (0.005 * f.knight));
		var d = uW.cm.ThroneController.effectBonus(77);
		c = c * (1 + (d / 100));
		if (uW.cm.WorldSettings.isOn("GUARDIAN_MARCH_EFFECT")) {
			var j = uW.cm.guardianModalModel.getStoneTrainingSpeedBonus();
			c = c * (1 + j)
		}
		h = Math.max(1, Math.ceil(h / c));
		if (uW.cm.PrestigeModel.isPrestige(cid)) {
			var a = uW.cm.PrestigeModel.getPrestigeLevel(cid);
			if (a > 0) {
				var m = uW.cm.WorldSettings.getSetting("ASCENSION_BARRACKS_BOOST"),
				k = JSON.parse(m),
				o = k.values[a - 1][1],
				i = parseFloat(o);
				h = Math.ceil(h * i)
			}
		}
		var r = uW.cm.BlessingSystemModel.isBlessingActive(uW.cm.BlessingSystemModel.getBlessing().DEATH_FROM_AFAR);
		if (n == 6 && r) {
			h = Math.ceil(h - (h * uW.cm.BlessingSystemModel.applyBlessing(uW.cm.BlessingSystemModel.getBlessing().DEATH_FROM_AFAR, cid, {})))
		}
		h = Math.ceil(h - (h * uW.cm.BlessingSystemModel.applyBlessing(uW.cm.BlessingSystemModel.getBlessing().EXPEDITED_SENTENCING, cid, {
						traintime : true,
						unitid : n
					})));
		h = Math.ceil(h - (h * uW.cm.BlessingSystemModel.applyBlessing(uW.cm.BlessingSystemModel.getBlessing().TO_THE_FRONT_LINES, cid, {
						unitid : n
					})));
		h = Math.ceil(h - (h * uW.cm.BlessingSystemModel.applyBlessing(uW.cm.BlessingSystemModel.getBlessing().PRIORITIZED_CONSTRUCTION, cid, {
						unittype : n
					})));
		if (uW.cm.VipModel.isActive()) {
			var s = uW.cm.VipModel.getBoostValue("benefitTraining");
			h = Math.ceil(h - (h * (s / 100)))
		}
		return h
	},
	
	show: function () {
		var t = Tabs.Tournament;
		t.cont.style.overflowY = 'auto';
		t.cont.style.maxHeight = '650px';
		clearTimeout(t.displayTimer);
		t.cont.innerHTML = "<div class='tourny_modal_upsell'></div>";
		var mhtl = "<DIV class=ptstat>POPULATION AND PRODUCTION INFORMATION</div><table width=100% class=pdxTab><tr><td colspan=8>&nbsp;</td></tr><tr><td></td>";
		for (var i = 0; i < Cities.numCities; i++) {
			mhtl += "<TD align=center valign=bottom width=60px><B>" + Cities.cities[i].name + "</B></TD>";
		}
		mhtl += "</tr><tr><td>";
		mhtl += '<SELECT id="TTroopsPerHr">';
		for (y in uW.unitnamedesctranslated) {
			if (!Options.TourneyTroopType) {
				Options.TourneyTroopType = 2;
				saveOptions();
			}
			if (y.substr(3) == Options.TourneyTroopType)
				mhtl += '<option selected value="' + y.substr(3) + '">' + uW.unitnamedesctranslated[y][0] + '</option>';
			else
				mhtl += '<option value="' + y.substr(3) + '">' + uW.unitnamedesctranslated[y][0] + '</option>';
			if (y.substr(3) > 4) break; // only 1 pop per troop makes sense	here
		}
		mhtl += '</select>';
		mhtl += "&nbsp;/h</td>";
		var temps = [];
		for (var i = 0; i < Cities.numCities; i++) {
			temps[i] = (3600 / (t.getTrainTime(Options.TourneyTroopType,100000,Cities.cities[i].id)/100000));
			if (!isNaN(temps[i])) {
				mhtl += "<td>" + addCommas(parseInt(temps[i])) + "</td>";
			}	
			else {
				mhtl += "<td>N/A</td>";
			}	
		}
		mhtl += "</tr><tr><td><img height=18 src=https://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/population_40.png title=Population> Population/h</td>";
		var pop = [];
		for (var i = 0; i < Cities.numCities; i++) {
			cityID = 'city' + Cities.cities[i].id;
			pop[i] = parseInt(Seed.citystats[cityID]["pop"][1]) / 2;
			mhtl += "<td>" + addCommas(parseInt(pop[i])) + "</td>";
		}
		mhtl += "</tr><tr><td><b>Difference</b></td>";
		var diff = 0;
		for (var i = 0; i < Cities.numCities; i++) {
			diff = parseInt(pop[i] - temps[i]);
			var couleur = " style='font-color:green' ";
			if (diff < 0) couleur = " style='background-color:red' ";
			if (isNaN(diff)) {
				mhtl += "<td style='background-color:red'><center><b>N/A</b></center></td>";
			} else {
				mhtl += "<td " + couleur + "><b>" + addCommas(parseInt(diff)) + "</b></td>";
			}
		}
		mhtl += "</tr><tr><td><img height=18 src=https://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/happiness.png title=happiness> happiness</td>";
		for (var i = 0; i < Cities.numCities; i++) {
			cityID = 'city' + Cities.cities[i].id;
			var bon = parseInt(Seed.citystats[cityID]["pop"][2]);
			var bonc = "red";
			if (bon > 99) bonc = "green";
			mhtl += "<td style='background-color:" + bonc + "'><center><b>" + bon + "</td>";
		}
		var now = unixTime();
		mhtl += "</tr><tr><td><b>Queue</b></td>";
		for (var i = 0; i < Cities.numCities; i++) {
			cityID = 'city' + Cities.cities[i].id;
			var totTime = 0;
			var q = Seed.queue_unt[cityID];
			if (q != null && q.length > 0)
				totTime = q[q.length - 1][3] - now;
			if (totTime < 0) totTime = 0;
			if (totTime < 3600)
				var bonc = "style='background-color:red'";
			else
				var bonc = "";
			mhtl += "<td " + bonc + "><center><b>" + timestr(totTime) + "</td>";
		}
		mhtl += "</tr></table><br>";
		t.cont.innerHTML += mhtl;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.format = 2;
		params.tournyPos = t.tourneyPos;
		new AjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getLeaderboard.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (transport) {
				var rslt = eval("(" + transport.responseText + ")");
				if (rslt.ok) {
					var prevs = [];
					for (var s = 0; s < 4; s++) {
						w = rslt["previous" + s];
						if (w && w > -1) {
							prevs.push(uW.formatDateByUnixTime(w));
						}
					}
					if (!rslt.data) {
						t.cont.innerHTML += "<div class=ptstat>TOURNAMENT CHECK</div><div class='tourny_modal_upsell'><br><center><b>No Active Tournaments!</b></center></div>";
						for (var s = 0; s < prevs.length; s++) {
							t.cont.innerHTML += "<div class='tourny_modal_upsell'><br><center><b><a onclick='ptSetTourneyPos(" + s + 1 + ")'>Show Tournament that ended on " + prevs[s] + "</a></b></center></div>";
						}
					} else { //  rslt.data
						var tournyhtml = new Array();
						if (rslt.name) {
							tournyhtml.push("<div class=ptstat><center>" + rslt.name.replace('The Tournament of Might', 'THE TOURNAMENT OF MIGHT') + "</center></div>")
						} else {
							tournyhtml.push("<div class='tournymodaltitle'><center>" + unsafeWindow.g_js_strings.commonstr.tournament + "</div>")
						}
						tournyhtml.push("<div>");
						if (t.tourneyPos != 0) {
							tournyhtml.push("<div class='tourny_modal_upsell'><br><center><b><a onclick='ptSetTourneyPos(0)'>Show Current Tournament (if any)</a></b></center></div>");
						}
						for (var s = 0; s < prevs.length; s++) {
							if (t.tourneyPos != (s + 1)) {
								tournyhtml.push("<div class='tourny_modal_upsell'><br><center><b><a onclick='ptSetTourneyPos(" + s + 1 + ")'>Show Tournament that ended on " + prevs[s] + "</a></b></center></div>");
							}
						}
						tournyhtml.push("<div>&nbsp;</div>");
						if (rslt.startDate && rslt.endDate) {
							var startTime = rslt.startDate;
							var endTime = rslt.endDate;
							var now = parseInt(new Date().getTime() / 1000);
							tournyhtml.push("<table width=100% align=center class=pbTab><tr bgcolor=#FE8888><td width=40%><b>Starts</td><td width=40%><b>Ends</td><td width=20%><b>Time Left</td></tr>");
							dt = new Date();
							dt.setTime(startTime * 1000);
							dtf = new Date();
							dtf.setTime(endTime * 1000);
							var restant = endTime - now;
							tournyhtml.push("<tr><td>");
							tournyhtml.push("" + dt.toLocaleDateString() + " - " + dt.toLocaleTimeString());
							tournyhtml.push("</td><td>");
							tournyhtml.push("" + dtf.toLocaleDateString() + " - " + dtf.toLocaleTimeString());
							if (restant > 0) {
								tournyhtml.push("</td><td>" + timestr(restant, 1) + "</td></tr></table>");
							} else {
								tournyhtml.push("</td><td>ENDED!</td></tr></table>");
							}
							tournyhtml.push("<br>");
						}
						if ((Options.TourneyBoardType != 2) || !rslt.worldData) {
							tourneystats = rslt.data;
							Options.TourneyBoardType = 1;
							saveOptions();
						} else {
							tourneystats = rslt.worldData;
						}
						mhtl = '<center><table width="90%" cellpadding="0" cellspacing="0" border="0"><tr><td width="40%"><div align=left><b>&nbsp;&nbsp;&nbsp;';
						if (Options.TourneyBoardType != 2) {
							mhtl += rslt.bracketName;
						} else {
							mhtl += 'Domain Leaders';
						}
						mhtl += '</b></div></td><td>';
						if (rslt.worldData) {
							mhtl += "<div align=center ><input type=button id='BTLeaders' value='-'></div>";
						}
						mhtl += '</td><td width="40%">';
						if (rslt.lastUpdated && (t.tourneyPos == 0)) {
							var now = parseInt(new Date().getTime() / 1000);
							var updated = now - rslt.lastUpdated;
							mhtl += "<div align=right >Last updated " + timestr(updated, 1) + " ago.</div>";
						}
						mhtl += '</td></tr></table></center>';
						tournyhtml.push(mhtl);
						tournyhtml.push("<center><table class='tourny_list_table' cellpadding='0' cellspacing='0' border='0' width=90% style='margin:5px'>");
						tournyhtml.push("<thead>");
						tournyhtml.push("<tr>");
						if (rslt.type == 24) {
							tournyhtml.push("<td class='rankcol' style='background-color:red'>");
							tournyhtml.push("<div><input type=button id='BOTournoiPM' value='-'>&nbsp;" + unsafeWindow.g_js_strings.commonstr.ranking + "</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td  style='background-color:red'>");
							tournyhtml.push("<div>Chancellor</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td  style='background-color:red'>");
							tournyhtml.push("<div>" + unsafeWindow.g_js_strings.commonstr.alliance + "</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td  style='background-color:red'>");
							tournyhtml.push("<div>" + unsafeWindow.g_js_strings.modal_tourny_changetab.mightgained + "</div>");
							tournyhtml.push("</td  style='background-color:red'>");
							tournyhtml.push("<td  style='background-color:red'> ");
							tournyhtml.push("<div>" + unsafeWindow.g_js_strings.modal_tourny_changetab.rewardperplayer + "</div>");
							tournyhtml.push("</td>")
						} else {
							tournyhtml.push("<td	class='rankcol' style='background-color:red'>");
							tournyhtml.push("<div><input type=button id='BOTournoiPM' value='-'>&nbsp;" + unsafeWindow.g_js_strings.commonstr.ranking + "</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td  style='background-color:red'>");
							tournyhtml.push("<div>Player</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td  style='background-color:red'>");
							tournyhtml.push("<div>" + unsafeWindow.g_js_strings.commonstr.alliance + "</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td  style='background-color:red'>");
							if (rslt.type == 31)
								tournyhtml.push("<div>" + unsafeWindow.g_js_strings.modal_tourny_changetab.mightgained + "</div>");
							else
								tournyhtml.push("<div>" + rslt.contestcategory + "</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td  style='background-color:red'>");
							tournyhtml.push("<div>" + unsafeWindow.g_js_strings.commonstr.reward + "</div>");
							tournyhtml.push("</td>")
						}
						tournyhtml.push("</tr>");
						tournyhtml.push("</thead>");
						tournyhtml.push("</tbody>");
						var nb = tourneystats.length;
						var votrepuissance = 0;
						for (var i = 0; i < tourneystats.length; i++) {
							var row = tourneystats[i];
							if (rslt.type == 24) { // Tournament
								if (getMyAlliance()[1] == row.alliance) {
									votrepuissance = row.contestValue;
									break;
								}
							} else {
								if (Seed.player.prefix + ' ' + Seed.player.name == row.name) {
									votrepuissance = row.contestValue;
									break;
								}
							}
						}
						for (var i = 0; i < Options.TournoiLigne; i++) {
							if (tourneystats[i] == null) break;
							var row = tourneystats[i];
							var rewardString = " ";
							if (row.itemType) {
								rewardString = row.itemCount + " ";
								if (row.itemType == 0) {
									rewardString += unsafeWindow.g_js_strings.commonstr.gems;
								} else {
									rewardString += unsafeWindow.itemlist["i" + row.itemType].name;
								}
							}
							var couleur = "";
							if (rslt.type == 24) { //Alliance Tournament
								if (getMyAlliance()[1] == row.alliance) {
									couleur = " style='background-color:#FF0000' ";
								}
							} else {
								if (Seed.player.prefix + ' ' + Seed.player.name == row.name) {
									couleur = " style='background-color:#FF0000' ";
								}
							}
							if (i % 2 == 1) {
								tournyhtml.push("<tr>")
							} else {
								tournyhtml.push("<tr class='stripe'>")
							}
							tournyhtml.push("<td class='rankcol' " + couleur + ">");
							tournyhtml.push("<div><b>" + row.ranking + "</b></div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td " + couleur + ">");
							tournyhtml.push("<div>" + row.name + "</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td " + couleur + ">");
							tournyhtml.push("<div>" + (row.alliance || "----") + "</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td " + couleur + ">");
							tournyhtml.push("<div>" + addCommas(row.contestValue));
							if (votrepuissance > 0) {
								var ecartavecvous = parseInt(row.contestValue - votrepuissance);
								if (ecartavecvous > 0) {
									tournyhtml.push(" (+" + addCommas(ecartavecvous) + ")");
								}
								if (ecartavecvous < 0) {
									tournyhtml.push(" (" + addCommas(ecartavecvous) + ")");
								}
							}
							tournyhtml.push("</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("<td " + couleur + ">");
							tournyhtml.push("<div>" + rewardString + "</div>");
							tournyhtml.push("</td>");
							tournyhtml.push("</tr>")
						} // fin du for
						if (rslt.type != 24) {
							for (var i = Options.TournoiLigne; i < tourneystats.length; i++) {
								if (tourneystats[i] == null) break;
								var row = tourneystats[i];
								var couleur = "";
								if (Seed.player.prefix + ' ' + Seed.player.name == row.name) {
									couleur = " style='background-color:#FF0000' ";
									var rewardString = " ";
									if (row.itemType) {
										rewardString = row.itemCount + " ";
										if (row.itemType == 0) {
											rewardString += unsafeWindow.g_js_strings.commonstr.gems;
										} else {
											rewardString += unsafeWindow.itemlist["i" + row.itemType].name;
										}
									}
									tournyhtml.push("<tr class='stripe' >")
									tournyhtml.push("<td class='rankcol' " + couleur + ">");
									tournyhtml.push("<div><b>" + row.ranking + "</b></div>");
									tournyhtml.push("</td>");
									tournyhtml.push("<td " + couleur + ">");
									tournyhtml.push("<div>" + row.name + "</div>");
									tournyhtml.push("</td>");
									tournyhtml.push("<td " + couleur + ">");
									tournyhtml.push("<div>" + (row.alliance || "----") + "</div>");
									tournyhtml.push("</td>");
									tournyhtml.push("<td " + couleur + ">");
									tournyhtml.push("<div>" + addCommas(row.contestValue) + "</div>");
									tournyhtml.push("</td>");
									tournyhtml.push("<td " + couleur + ">");
									tournyhtml.push("<div>" + rewardString + "</div>");
									tournyhtml.push("</td>");
									tournyhtml.push("</tr>")
								}
							}
						}
						tournyhtml.push("</tbody>");
						tournyhtml.push("</table>");
						tournyhtml.push("</div>");
						t.cont.innerHTML += tournyhtml.join("");
						document.getElementById('BOTournoiPM').addEventListener('click', function () {
							var lg = tourneystats.length;
							if (rslt.type != 24) lg = 250;
							t.plusmoins(lg);
						}, false);
						if ((Options.TournoiLigne == 5 && rslt.type != 24) || (Options.TournoiLigne == 5 && rslt.type == 24)) {
							document.getElementById('BOTournoiPM').value = "Maximize";
						} else {
							document.getElementById('BOTournoiPM').value = "Minimize";
						}
						if (Options.TourneyBoardType != 2) {
							document.getElementById('BTLeaders').value = "Show Domain Leaders";
						} else {
							document.getElementById('BTLeaders').value = "Show Your Bracket (" + rslt.bracketName + ")";
						}
						document.getElementById('BTLeaders').addEventListener('click', function () {
							t.leadertoggle();
						}, false);
					} // fin rslt.data 
				} else {
					t.cont.innerHTML = "<div class='tourny_modal_upsell'><center>No Info</div>";
				}
				document.getElementById('TTroopsPerHr').addEventListener('change', function () {
					t.changetroops(this);
				}, false);
			},
			onFailure: function () {
				t.cont.innerHTML = "<div class='tourny_modal_upsell'><center>No Info</div>";
			}
		});
		t.displayTimer = setTimeout(t.show, 240000);
	},
	plusmoins: function (lg) {
		var t = Tabs.Tournament;
		if (document.getElementById('BOTournoiPM').value == "Maximize") {
			document.getElementById('BOTournoiPM').value = "Minimize";
			Options.TournoiLigne = lg;
		} else {
			document.getElementById('BOTournoiPM').value = "Maximize";
			Options.TournoiLigne = 5;
		}
		saveOptions();
		clearTimeout(t.displayTimer);
		t.show();
	},
	leadertoggle: function () {
		var t = Tabs.Tournament;
		if (document.getElementById('BTLeaders').value == "Show Domain Leaders") {
			Options.TourneyBoardType = 2;
		} else {
			Options.TourneyBoardType = 1;
		}
		saveOptions();
		clearTimeout(t.displayTimer);
		t.show();
	},
	changetroops: function (el) {
		var t = Tabs.Tournament;
		Options.TourneyTroopType = el.value;
		saveOptions();
		clearTimeout(t.displayTimer);
		t.show();
	},
	/*
checktourney: function() {
 var t = Tabs.Tournament;
  var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
params.format=2;
params.tournyPos=0;
new AjaxRequest(unsafeWindow.g_ajaxpath+"ajax/getLeaderboard.php"+unsafeWindow.g_ajaxsuffix, {  
  method:"post",  parameters:params,
	  
onSuccess:function(transport){
var rslt=eval("("+transport.responseText+")");
if(rslt.name){
 var t = Tabs.Tournament;
   AddTowerTab('Turnier', t.showTournament, 10);
};		  
},
   });	  
},
showTournament: function() {
//      Options.currentTab = culang.tournament;   
//        saveOptions();
mainPop.show (true);
//		setTimeout(function(){document.getElementById('pbtc'+culang.tournament).e_clickedTab}, 3000);
//  tabManager.e_clickedTab(e);
},
*/
}
/*************** WILDS TAB *********************/
var wildNames = {
	0: 'Bog',
	10: 'Grassland',
	11: 'Lake',
	20: 'Woods',
	30: 'Hills',
	40: 'Mountain',
	50: 'Plain',
};
var mercNames = {
	0: 'None',
	1: 'Novice',
	2: 'Intermediate',
	3: 'Veteran',
};
Tabs.Wilds = {
	tabOrder: 35,
	tabLabel: 'Wilds',
	cont: null,
	//  state : null,
	upGoldTimer: null,
	wildList: [],
	buildList: {},
	init: function (div) {
		var t = Tabs.Wilds;
		t.cont = div;
		uW.ptButMaxTraps = t.e_butMaxTraps;
		uW.ptInpWildTraps = t.e_inpTraps;
		uW.ptButWildSet = t.e_butWildSet;
		uW.ptButAbandon = t.e_abandon;
		t.cont.innerHTML = '<DIV id=wildContent style="maxheight:700px; height:700px; overflow-y:auto">';
		//    t.show ();
	},
	hide: function () {
		var t = Tabs.Wilds;
		clearTimeout(t.upGoldTimer);
	},
	show: function () {
		var t = Tabs.Wilds;
		clearTimeout(t.upGoldTimer);
		m = '<CENTER>' + strButton20('RESET', 'id=ptwref') + '</center><TABLE cellspacing=0 cellpadding=0 class=ptTabPad align=center>';
		for (var c = 0; c < Cities.numCities; c++) {
			var city = Cities.cities[c];
			var cWilds = Seed.wilderness['city' + city.id];
			t.wildList[c] = [];
			var castle = parseInt(Seed.buildings['city' + city.id].pos0[1]);
			if (castle == 11) castle = 12;
			else if (castle == 12) castle = 14;
			var totw = 0;
			if (matTypeof(cWilds) == 'object') {
				for (var k in cWilds)
				++totw;
			}
			m += '<TD width = "100px" ; border:none"><a href="https://code.google.com/p/koc-power-tools/wiki/HowToWilds" target="_blank">HELP</a></td></tr>';
			m += '<TR><TD colspan=20><DIV class=ptstat><TABLE class=ptNoPad width=100%><TR><TD width=100></td><TD width=90% align=center>' + city.name + ' &nbsp; (' + city.x + ',' + city.y + ')</td><TD width=100 align=right>Wilds: ' + totw + ' of ' + castle + ' &nbsp; </TD></tr></table></div></td></tr>';
			var row = 0;
			var sortem = [];
			if (matTypeof(cWilds) != 'array') {
				m += '<TR style="background-color:white; font-weight:bold;" align=right><TD align=left>Wild Type</td><TD></td><TD align=left>Coords</td><TD>Traps</td><TD align=left>Mercs</td><TD>Abandon</td>\
         <TD width=15></td><TD colspan=3 class=entry>' + htmlTitleLine(' CHANGE DEFENSES ') + '</td></tr>';
				for (var k in Seed.wilderness['city' + city.id])
					sortem.push(Seed.wilderness['city' + city.id][k]);
				sortem.sort(function (a, b) {
					var x;
					if ((x = b.tileLevel - a.tileLevel) != 0)
						return x;
					return a.tileType - b.tileType;
				});
				for (i = 0; i < sortem.length; i++) {
					var wild = sortem[i];
					var wildDef = Seed.wildDef['t' + wild.tileId];
					if (wildDef == undefined || !wildDef)
						wildDef = {
							fort60Count: 0,
							mercLevel: 0
						};
					var maxTraps = parseInt(wild.tileLevel) * 100;
					var maxBuild = maxTraps - parseInt(wildDef.fort60Count);
					t.wildList[c][i] = [wild.tileId, maxBuild];
					//
					m += '<TR align=right' + (row++ % 2 ? '' : ' class=ptOddrow') + '><TD align=left>' + wildNames[wild.tileType] + '</td>\
            <TD>' + wild.tileLevel + '</td><TD align=center><A onclick="ptGotoMap(' + wild.xCoord + ',' + wild.yCoord + ')">' + wild.xCoord + ',' + wild.yCoord + '</a></td>\
            <TD align=right><B>' + wildDef.fort60Count + '</b></td><TD align=center><B>' + mercNames[wildDef.mercLevel] + '</b></td><TD align=center>' + strButton14('Abandon', 'onclick="ptButAbandon(' + wild.tileId + ',' + wild.xCoord + ',' + wild.yCoord + ',' + city.id + ')" id=tileId_' + wild.tileId) + '</td>\
            <TD></td><TD align=left class=ptentry><B>Build Traps:</b> <INPUT onchange="ptInpWildTraps(this)" id=ptwt_' + c + '_' + i + (maxBuild == 0 ? ' DISABLED ' : '') + ' style="margin:0px; padding:0px" type=text size=3 maxlength=4></td>'
					if (wildDef.fort60Count < maxTraps)
						m += '<TD class=ptentry style="padding:0px">' + strButton14('Max', 'id=ptwx_' + c + '_' + i + ' onclick="ptButMaxTraps(this)"') + '</td>';
					else
						m += '<TD class=ptentry></td>';
					m += '<TD class=ptentry> &nbsp; &nbsp; <B>Mercs:</b> ' + htmlSelector(mercNames, wildDef.mercLevel, 'id=ptwm_' + c + '_' + i) + ' &nbsp; &nbsp; </td></tr>';
				}
				m += '<TR><TD colspan=6></td><TD></td><TD class=ptentry align=center colspan=3><TABLE><TR><TD width=40% align=left>Cost: <SPAN id=ptwgc_' + c + '>0</span></td>\
            <TD width=10%>' + strButton20("SET DEFENSES", 'onclick="ptButWildSet(' + c + ')"') + '<TD width=40% align=right>Gold: <SPAN id=ptwgt_' + c + '>0</span></td></td></tr></table></td></tr>';
			} else {
				m += '<TR><TD colspan=9> &nbsp; </td></tr>';
			}
		}
		document.getElementById('wildContent').innerHTML = m + '</table></div>';
		document.getElementById('ptwref').addEventListener('click', t.show, false);
		t.updateGold();
	},
	e_abandon: function (tileId, xCoord, yCoord, cityId) {
		var t = Tabs.Wilds;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.tid = tileId;
		params.x = xCoord;
		params.y = yCoord;
		params.cid = cityId;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/abandonWilderness.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok) {
					delete Seed.wilderness["city" + cityId]["t" + tileId];
					t.show();
					if (rslt.updateSeed) {
						uW.update_seed(rslt.updateSeed);
					}
				}
			},
			onFailure: function () {},
		});
	},
	e_butWildSet: function (c) {
		var t = Tabs.Wilds;
		var totTraps = 0;
		var cid = Cities.cities[c].id;
		t.buildList = {
			cityId: cid,
			list: []
		};
		for (var w = 0; w < t.wildList[c].length; w++) {
			var wild = Seed.wilderness['city' + cid]['t' + t.wildList[c][w][0]];
			var wildDef = Seed.wildDef['t' + t.wildList[c][w][0]];
			// TODO: Seed.wildDef is null if just aquired 
			if (wildDef == undefined || !wildDef)
				wildDef = {
					fort60Count: 0,
					mercLevel: 0
				};
			var numTraps = parseInt(document.getElementById('ptwt_' + c + '_' + w).value, 10);
			if (isNaN(numTraps))
				numTraps = 0;
			totTraps += numTraps;
			if (numTraps > 0)
				t.buildList.list.push(['T', wild.tileId, numTraps]);
			var mercId = document.getElementById('ptwm_' + c + '_' + w).value;
			if (wildDef.mercLevel != mercId)
				t.buildList.list.push(['M', wild.tileId, mercId, wildDef.mercLevel]);
		}
		var totCost = totTraps * 200;
		if (totCost > parseInt(Seed.citystats['city' + cid].gold[0])) {
			document.getElementById('ptwgc_' + c).innerHTML = '<SPAN class=boldRed>' + addCommasInt(totCost) + '</span>';
			return;
		}
		if (t.buildList.list.length == 0)
			return;
		t.setCurtain(true);
		var popDiv = t.setPopup(true);
		popDiv.innerHTML = '<TABLE class=ptTab width=100% height=100%><TR><TD>\
          <DIV class=ptstat>Setting Wilderness Defenses</div>\
          <DIV id=ptWildBuildDiv class=ptDiv style="padding:10px; height:225px; max-height:225px; overflow-y:auto"></div>\
          </td></tr><TR><TD align=center>' + strButton20('CANCEL', 'id=ptWildCancel') + '</td></tr></table>';
		document.getElementById('ptWildCancel').addEventListener('click', t.e_buildCancel, false);
		t.processQue(null);
	},
	e_buildCancel: function () {
		var t = Tabs.Wilds;
		t.setCurtain(false);
		t.setPopup(false);
		t.show();
	},
	processQue: function (errMsg) {
		var t = Tabs.Wilds;
		var what = t.buildList.list.shift();
		var div = document.getElementById('ptWildBuildDiv');
		if (what == null || errMsg) {
			if (errMsg)
				div.innerHTML += '<BR><SPAN style="white-space:normal;" class=boldRed>ERROR: ' + errMsg + '</span>';
			else
				div.innerHTML += 'Done.<BR>';
			document.getElementById('ptWildCancel').firstChild.innerHTML = 'CLOSE';
			return;
		}
		if (div.innerHTML != '')
			div.innerHTML += 'Done.<BR>';
		var wild = Seed.wilderness['city' + t.buildList.cityId]['t' + what[1]];
		if (what[0] == 'T') {
			div.innerHTML += 'Building ' + what[2] + ' traps for ' + Cities.byID[t.buildList.cityId].name + '\'s wilderness at ' + wild.xCoord + ',' + wild.yCoord + ' ... ';
			t.postBuyTraps(t.buildList.cityId, what[1], what[2], t.processQue);
		} else {
			div.innerHTML += 'Setting Mercenaries to ' + mercNames[what[2]] + ' for ' + Cities.byID[t.buildList.cityId].name + '\'s wilderness at ' + wild.xCoord + ',' + wild.yCoord + ' ... ';
			t.postHireMercs(t.buildList.cityId, what[1], what[2], what[3], t.processQue);
		}
	},
	setPopup: function (onoff) {
		var t = Tabs.Wilds;
		if (onoff) {
			var div = document.createElement('div');
			div.id = 'ptWildPop';
			div.style.backgroundColor = '#fff';
			div.style.zindex = mainPop.div.zIndex + 2;
			div.style.opacity = '1';
			div.style.border = '3px outset red';
			div.style.width = '550px';
			div.style.height = '300px';
			div.style.display = 'block';
			div.style.position = 'absolute';
			div.style.top = '100px';
			div.style.left = '100px';
			t.cont.appendChild(div);
			return div;
		} else {
			t.cont.removeChild(document.getElementById('ptWildPop'));
		}
	},
	setCurtain: function (onoff) {
		var t = Tabs.Wilds;
		if (onoff) {
			var off = getAbsoluteOffsets(t.cont);
			var curtain = document.createElement('div');
			curtain.id = 'ptWildCurtain';
			curtain.style.zindex = mainPop.div.zIndex + 1;
			curtain.style.backgroundColor = "#000000";
			curtain.style.opacity = '0.5';
			curtain.style.width = t.cont.clientWidth + 'px';
			curtain.style.height = t.cont.clientHeight + 'px';
			curtain.style.display = 'block';
			curtain.style.position = 'absolute';
			curtain.style.top = off.top + 'px';
			curtain.style.left = off.left + 'px';
			t.cont.appendChild(curtain);
		} else {
			t.cont.removeChild(document.getElementById('ptWildCurtain'));
		}
	},
	e_butMaxTraps: function (e) {
		var t = Tabs.Wilds;
		var c = e.id.substr(5, 1);
		var w = e.id.substr(7);
		var inp = document.getElementById('ptwt_' + c + '_' + w);
		inp.value = t.wildList[c][w][1];
		t.e_inpTraps(inp);
	},
	e_inpTraps: function (e) {
		var t = Tabs.Wilds;
		var c = e.id.substr(5, 1);
		var w = e.id.substr(7);
		var tot = 0;
		for (var i = 0; i < t.wildList[c].length; i++) {
			var val = parseInt(document.getElementById('ptwt_' + c + '_' + i).value, 10);
			if (isNaN(val))
				val = 0;
			tot += val;
		}
		document.getElementById('ptwgc_' + c).innerHTML = addCommasInt(tot * 200);
		if (isNaN(e.value) || e.value < 0 || e.value > t.wildList[c][w][1]) {
			e.value = '';
			e.style.backgroundColor = '#ffaaaa';
		} else
			e.style.backgroundColor = null;
	},
	updateGold: function () {
		var t = Tabs.Wilds;
		for (var c = 0; c < Cities.numCities; c++) {
			var e = document.getElementById('ptwgt_' + c + '');
			if (e)
				e.innerHTML = addCommasInt(Seed.citystats['city' + Cities.cities[c].id].gold[0]);
		}
		t.upGoldTimer = setTimeout(t.updateGold, 2000);
	},
	postBuyTraps: function (cid, tid, quant, notify) {
		if (DISABLE_POST_DEFENSES) {
			setTimeout(function () {
				notify(null)
			}, 1500);
			return;
		}
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.cid = cid;
		params.tid = tid;
		params.quant = quant;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/buyWildTraps.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok) {
					if (!Seed.wildDef["t" + tid])
						Seed.wildDef["t" + tid] = {
							tileId: tid,
							fort60Count: 0,
							mercLevel: 0
						};
					Seed.wildDef["t" + tid].fort60Count = parseInt(Seed.wildDef["t" + tid].fort60Count) + parseInt(quant);
				}
				if (notify)
					notify(rslt.errorMsg);
			},
			onFailure: function () {
				if (notify)
					notify('AJAX ERROR');
			},
		});
	},
	postHireMercs: function (cid, tid, newLevel, oldLevel, notify) {
		if (DISABLE_POST_DEFENSES) {
			setTimeout(function () {
				notify('OK, so it\'s not really an error, it\'s just George playing around to see how the error message looks. It\'s a long one, how does it fit? Is it OK? Are you sure? JANE! Get me off of this thing!')
			}, 1500);
			return;
		}
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.cid = cid;
		params.tid = tid;
		params.lv = newLevel;
		params.olv = oldLevel;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/hireWildMerc.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok) {
					if (!Seed.wildDef["t" + tid])
						Seed.wildDef["t" + tid] = {
							tileId: tid,
							fort60Count: 0,
							mercLevel: 0
						};
					Seed.wildDef["t" + tid].mercLevel = newLevel;
				}
				if (notify)
					notify(rslt.errorMsg);
			},
			onFailure: function () {
				if (notify)
					notify('AJAX ERROR');
			},
		});
	},
}
/*************** KNIGHTS TAB *********************/
Tabs.Knights = {
	tabOrder: 30,
	tabLabel: uW.g_js_strings.commonstr.knight,
	cont: null,
	displayTimer: null,
	action: 0,
	init: function (div) {
		var t = Tabs.Knights;
		t.cont = div;
		uW.ptAssignSkill = t.clickedAssignPoints;
		uW.ptAssignTunes = t.clickedAssignTune;
		uW.ptButDismiss = t.postDismissKnight;
		t.cont.innerHTML = '<STYLE>table.ptTabPad tr.ptwpad {background-color:#ffffff; padding-left:15px}</style>\
       <DIV id=ptknightdiv style="max-height:736px; height:736px; max-width:745px; width:745px; overflow-y:auto">';
	},
	hide: function () {
		var t = Tabs.Knights;
		clearTimeout(t.displayTimer);
	},
	show: function () {
		var t = Tabs.Knights;
		clearTimeout(t.displayTimer);

		function _dispKnight(roleId, knight, numcid) {
			var rid = roleId;
			if (roleId == null)
				rid = 1;
			var sty = '';
			if (row++ % 2)
				sty = 'class=ptOddrow ';
			m = '<TR ' + sty + 'valign=top align=right><TD><B>' + (roleId == null ? '' : knightRoles[rid][0]) + '</b></td><TD align=left>';
			if (knight == null) {
				m += '--------</td><TD colspan=4></td><TD class=ptentry colspan=5></td><TD colspan=2></td></tr>';
			} else {
				var level = parseInt(Math.sqrt(parseInt(knight.experience) / 75)) + 1;
				var unpoints = level - parseInt(knight.skillPointsApplied);
				var salary = (parseInt(knight.skillPointsApplied) + 1) * 20;
				totSalary += salary;
				var ass = '';
				if (knight.knightStatus == 10) {
					ass = '<TD class=ptentry align=left colspan=4>Marching</td>';
				} else {
					if (unpoints > 0) {
						unpoints = '<SPAN class="boldRed">' + unpoints + '</span>';
						for (var i = 0; i < 4; i++) {
							var sty = 'padding-left:1px;';
							if (i == rid) // bold it
								sty += 'font-weight:bold;color:#116654';
							if (t.action == 2) {
								t.clickedAssignPoints(null, cid, knight.knightId, i);
							}
							if (t.action == 1) {
								t.clickedAssignPoints(null, cid, knight.knightId, 1);
							}
							ass += '<td class="ptentry" align="left" style="' + sty + '">';
							if (knight[knightRoles[i][1]] < 300) {
								ass += '<a title="' + uW.g_js_strings.modaltitles.assignskills + '" style="' + sty + '" onclick="ptAssignSkill(this,' + cid + ',' + knight.knightId + ',' + i + ')">[' + knightRoles[i][2] + ']</a>';
							} else {
								ass += '<span style="color: #006600; font-size: 10px; font-weight: normal;">(max)</span>';
							}
							ass += '</td>';
						}
					} else
						ass = '<TD class=ptentry colspan=4></td>';
				}
				var skills = [];
				for (var i = 0; i < 4; i++) {
					if (i == rid)
						skills[i] = '<B>' + knight[knightRoles[i][1]] + '</b>';
					else
						skills[i] = knight[knightRoles[i][1]];
				}
				var item211 = "0";
				var item221 = "0";
				var item231 = "0";
				var item241 = "0";
				if (Seed.items.i211) item211 = '<a onclick="citysel_click(document.getElementById(\'citysel_' + (numcid + 1) + '\'));setTimeout (function (){ boost_modal(1,' + knight.knightId + ');return false;}, 500);">' + Seed.items.i211 + '</a>';
				if (Seed.items.i221) item221 = '<a onclick="citysel_click(document.getElementById(\'citysel_' + (numcid + 1) + '\'));setTimeout (function (){ boost_modal(2,' + knight.knightId + ');return false;}, 500);">' + Seed.items.i221 + '</a>';
				if (Seed.items.i231) item231 = '<a onclick="citysel_click(document.getElementById(\'citysel_' + (numcid + 1) + '\'));setTimeout (function (){ boost_modal(3,' + knight.knightId + ');return false;}, 500);">' + Seed.items.i231 + '</a>';
				if (Seed.items.i241) item241 = '<a onclick="citysel_click(document.getElementById(\'citysel_' + (numcid + 1) + '\'));setTimeout (function (){ boost_modal(4,' + knight.knightId + ');return false;}, 500);">' + Seed.items.i241 + '</a>';
				m += '<a title="Assigner un role" onclick="citysel_click(document.getElementById(\'citysel_' + (numcid + 1) + '\'));setTimeout (function (){ assign_role_modal(' + knight.knightId + ');return false;}, 500);">' + knight.knightName + '</td><TD>' + strButton14('Dismiss', 'onclick="ptButDismiss(' + knight.knightId + ',' + cid + ')" id=tileId_') + '</td><TD>' + skills[0] + ' (' + item211 + ')</td><TD>' + skills[1] + ' (' + item221 + ')</td><TD>' + skills[2] + ' (' + item231 + ')</td><TD>' + skills[3] + ' (' + item241 + ')</td><TD class=ptentry>' + unpoints + '</td>' + ass + '<TD><a title="EXP Boost" onclick="citysel_click(document.getElementById(\'citysel_' + (numcid + 1) + '\'));setTimeout (function (){  xpBoost_modal(' + knight.knightId + ');return false; }, 500);">' + level + '</a></td><td><a onclick="citysel_click(document.getElementById(\'citysel_' + (numcid + 1) + '\'));setTimeout (function (){ loyalBoost_modal(' + knight.knightId + ');return false;}, 500);">' + knight.loyalty + '</a></td><TD>' + addCommas(salary) + '</td></tr>';
			}
			return m;
		}
		var totSalary = 0;
		var m = '<TABLE cellspacing=0 align=center class=ptTabPad><TBODY>';
		m += '<TR><TD colspan=15><DIV class=ptstat>Knight Assign Methods - <input style="height:20px;font-size:9px;" type=button value="Add Default Skill" id="ptknight_def"><input style="height:20px;font-size:9px;" type=button value="Add Combat Skill" id="ptknight_com"></div></td></tr>';
		for (var c = 0; c < Cities.numCities; c++) {
			var cid = Cities.cities[c].id;
			m += '<TR><TD colspan=15><DIV class=ptstat>' + Cities.cities[c].name + '</div></td></tr>\
          <TR class=ptwpad style="font-weight:bold" align=right><TD width=70>Role</td><TD width=140 align=center>Name</td><TD widith=70>Dismiss</td><TD width=26>Pol</td><TD width=26>Com</td>\
          <TD width=26>Int</td><TD width=26>Res</td><TD width=90 align=center colspan=5>--- Unassigned ---</td><TD width=35>Level</td><td>Loyalty</td><TD width=40 align=right> Salary </td></tr>';
			totSalary = 0;
			var did = {};
			var row = 0;
			for (var i = 0; i < knightRoles.length; i++) {
				var leader = Seed.leaders['city' + cid][knightRoles[i][1] + 'KnightId'];
				if (leader == 0)
					m += _dispKnight(i, null, c);
				else {
					m += _dispKnight(i, Seed.knights['city' + cid]['knt' + leader], c);
					did['knt' + leader] = true;
				}
			}
			var list = [];
			for (k in Seed.knights['city' + cid]) {
				if (!did[k])
					list.push(Seed.knights['city' + cid][k]);
			}
			list.sort(function (a, b) {
				return parseInt(b.combat) - parseInt(a.combat)
			});
			for (i = 0; i < list.length; i++)
				m += _dispKnight(null, list[i], c, cid);
			m += '<TR align=right><TD colspan=13><B>Total Salary:</b></td><TD>' + addCommas(totSalary) + '</td></tr>';
		}
		document.getElementById('ptknightdiv').innerHTML = m + '</tbody></table></div>';
		t.action = 0;
		document.getElementById('ptknight_com').addEventListener('click', function () {
			t.action = 1;
			t.show();
		}, false);
		document.getElementById('ptknight_def').addEventListener('click', function () {
			t.action = 2;
			t.show();
		}, false);
		t.displayTimer = setTimeout(t.show, 10000);
	},
	postDismissKnight: function (kid, cid) {
		var t = Tabs.Knights;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.cid = cid;
		params.kid = kid;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/fireKnight.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok) {
					if (rslt.updateSeed) {
						delete Seed.knights["city" + cid]["knt" + kid];
						if (rslt.updateSeed) {
							uW.update_seed(rslt.updateSeed)
						}
						t.show();
					}
				}
			},
			onFailure: function () {},
		});
	},
	clickedAssignPoints: function (e, cid, kid, rid) {
		var t = Tabs.Knights;
		clearTimeout(t.displayTimer);
		var knight = Seed.knights['city' + cid]['knt' + kid];
		if (knight.knightStatus == 10 && e != null) {
			var row = e.parentNode.parentNode;
			row.childNodes[7].innerHTML = 'Marching';
			return;
		}
		sk = [];
		var unassigned = parseInt(Math.sqrt(parseInt(knight.experience) / 75)) + 1 - parseInt(knight.skillPointsApplied);
		for (var i = 0; i < 4; i++) {
			sk[i] = parseInt(knight[knightRoles[i][1]]);
			if (i == rid)
				sk[i] += unassigned;
			if (sk[i] > 300) {
				sk[i] = 300;
				unassigned = parseInt(300 - parseInt(knight[knightRoles[i][1]]));
			}
		}
		if (unassigned == 0) return;
		if (e != null) {
			var row = e.parentNode.parentNode;
			for (i = row.cells.length - 1; i >= 1; i--)
				row.deleteCell(i);
			var newCell = row.insertCell(-1);
			newCell.colSpan = 12;
			newCell.align = 'left';
			newCell.style.padding = '1px 5px 1px 10px';
			var div = document.createElement('div');
			div.style.backgroundColor = '#ffffff';
			div.style.textAlign = 'center';
			div.style.border = '1px solid';
			div.style.width = '98%';
			div.style.whiteSpace = 'normal';
			newCell.appendChild(div);
			div.innerHTML = 'Assigning ' + unassigned + ' skill points to ' + knightRoles[rid][1] + ' ... ';
		}
		t.postSkillPoints(cid, kid, sk[0], sk[1], sk[2], sk[3], function (r) {
			t.postDone(r, div)
		});
	},
	postDone: function (rslt, div) {
		var t = Tabs.Knights;
		clearTimeout(t.displayTimer);
		if (rslt.ok) {
			div.innerHTML += '<B>Done.</b>';
			t.displayTimer = setTimeout(t.show, 5000);
		} else {
			div.innerHTML += '<BR><SPAN class=boldRed>ERROR: ' + rslt.errorMsg + '</span>';
			t.displayTimer = setTimeout(t.show, 10000);
		}
	},
	postSkillPoints: function (cid, kid, pol, com, int, res, notify) {
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.cid = cid;
		params.kid = kid;
		params.p = pol;
		params.c = com;
		params.i = int;
		params.r = res;
		if (DISABLE_POST_KNIGHT_SKILLS) {
			setTimeout(function () {
				notify({
					ok: true
				})
			}, 1500);
			//      setTimeout (  function (){notify({ok:false, errorMsg:"FAKE ERROR message, a long one, to test how it will fit and overflow! Perhaps you'll need to retry?"})}  , 2000);    
			return;
		}
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/skillupKnight.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok) {
					var knight = Seed.knights["city" + cid]["knt" + kid];
					var up = pol + com + int + res - knight.politics - knight.combat - knight.intelligence - knight.resourcefulness;
					knight.politics = pol;
					knight.combat = com;
					knight.intelligence = int;
					knight.resourcefulness = res;
					knight.skillPointsApplied = (parseInt(knight.skillPointsApplied) + up).toString();
				}
				if (notify)
					notify(rslt);
			},
			onFailure: function () {
				if (notify)
					notify(rslt);
			},
		});
	},
};
/**************/
var towho = {
	mmFunc: null,
	init: function () {
		t = towho;
		t.mmFunc = new CalterUwFunc('cm.messageController.messageWide', [
			[/params\.subject\s*=\s*..".modal_msg_write_subj".\.val.../im, 'params.subject = cm.messageController.escape\(allianceall?"{"+g_js_strings.commonstr.alliance+"}"+document.getElementById(\'modal_msg_write_subj\').value:"{"+g_js_strings.commonstr.officers+"}"+document.getElementById(\'modal_msg_write_subj\').value\);'],
			[/\$\("#modal_msg_write_to/im, 'jQuery("#modal_msg_write_to']
		]);
		t.mmFunc.setEnable(true);
	}
}
var messageNav = {
	mmFunc: null,
	mmsFunc: null,
	init: function () {
		t = messageNav;
		t.mmFunc = new CalterUwFunc('modal_messages', [
			[/}\s*$/, 'setTimeout(messageNav_hook,0); }']
		]);
		t.mmsFunc = new CalterUwFunc('modal_messages_send', [
			[/{\s*var params/i, '{\nif (modal_messages_send_hook()) return;\nvar params']
		]);
		uW.messageNav_hook = messageNav.hook;
		uW.modal_messages_send_hook = messageNav.msgSendHook;
		// t.mmFunc.setEnable (true);
		// t.mmsFunc.setEnable (true);
	},
	setEnable: function (tf) {},
	isAvailable: function () {
		t = messageNav;
		//return t.mmFunc.isAvailable();
		return false;
	},
	hook: function () {
		if (!Options.enhanceMsging)
			return;
		var div = document.getElementById('modal_msg_view_actions');
		var but = makeButton20('Forward');
		div.appendChild(but);
		but.addEventListener('click', messageNav.eventForward, false);
		div = document.getElementById('modal_msg_write_to').parentNode;
		div.innerHTML = '<TABLE><TR><TD class=xtab><b>To:</b> <INPUT type=text id=modal_msg_write_to></td><TD class=xtab><SPAN id=ptfwdbut></span></td></tr></table>';
		var button = makeButton20('All Officers');
		document.getElementById('ptfwdbut').appendChild(button);
		button.addEventListener('click', function () {
			document.getElementById("modal_msg_write_to").value = "<officers>"
		}, false);
	},
	eventForward: function () {
		document.getElementById('modal_msg_write_subj').value = "fwd: " + document.getElementById('modal_msg_view_subj').innerHTML.toString().stripTags();
		document.getElementById('modal_msg_write_to').value = '';
		var from = document.getElementById('modal_msg_view_from').children[0].innerHTML;
		var body = document.getElementById('modal_msg_view_body').innerHTML.replace(/\n/g, '').replace(/<br>/gi, '\n').stripTags().replace(/back$/i, '');
		document.getElementById('modal_msg_write_txt').value = '[Original message from ' + from + ' follows:]\n' + body;
		uW.modal_messages_compose();
	},
	msgSendHook: function () {
		if (!Options.enhanceMsging)
			return;
		var to = document.getElementById("modal_msg_write_to").value.trim();
		if (to.toLowerCase() != '<officers>' || getMyAlliance()[0] == 0)
			return false;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.toIds = getMyAlliance()[0];
		params.subject = document.getElementById("modal_msg_write_subj").value + ' [Sent to all officers]';
		params.message = document.getElementById("modal_msg_write_txt").value;
		params.type = 'alliance';
		new AjaxRequest(uW.g_ajaxpath + "ajax/sendMessage.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (message) {
				var rslt = eval("(" + message.responseText + ")");
				if (rslt.ok) {
					uW.Modal.showAlert(uW.g_js_strings.modal_messages_send.msgsent);
					document.getElementById('modal_msg_write_to').value = "";
					document.getElementById('modal_msg_write_subj').value = "";
					document.getElementById('modal_msg_write_txt').value = ""
				} else {
					uW.Modal.showAlert(uW.g_js_strings.modal_messages_send.enterexistingname)
				}
			},
			onFailure: function () {
				uW.Modal.showAlert(uW.g_js_strings.modal_messages_send.oopscompose)
			},
		});
		return true;
	},
}
var AttackDialog = {
	init: function () {
		var t = AttackDialog;
		t.modal_attackFunc = new CalterUwFunc('modal_attack', [
			[/}\s*$/, '; attackDialog_hook(); }']
		]);
		uW.attackDialog_hook = t.modalAttackHook;
		t.modal_attackFunc.setEnable(true);
	},
	setEnable: function () {},
	isKnightSelectAvailable: function () {
		var t = AttackDialog;
		return t.modal_attackFunc.isAvailable();
	},
	isAttackCityPickerAvailable: function () {
		var t = AttackDialog;
		return t.modal_attackFunc.isAvailable();
	},
	modalAttackHook: function () {
		var t = AttackDialog;
		if (Options.fixKnightSelect || Options.attackCityPicker) {
			for (var i = 1; i < 6; i++)
				document.getElementById('modal_attack_tab_' + i).addEventListener('click', t.e_changeMarchType, false);
		}
		if (Options.attackCityPicker) {
			setTimeout(t.initCityPicker, 0);
		}
		if (Options.DontFilterTransportTroops) {
			var sf = document.getElementById('modal_attack_supplyfilter_checkbox');
			if (sf) { if (sf.checked) { sf.click(); }}
		}
	},
	initCityPicker: function () {
		var t = AttackDialog;
		var div = document.getElementById('modal_attack_target_numflag'); // as of KofC version 96;
		var mySpan;
		if (div) {
			div.parentNode.innerHTML += ' &nbsp; <SPAN id=modal_attack_citybuts></span>';
		} else {
			var span = document.getElementById('modal_attack_target_coords'); // KofC version 116+;
			span.parentNode.parentNode.firstChild.innerHTML += ' &nbsp; <SPAN id=modal_attack_citybuts></span>';
		}
		new CdispCityPicker('ptatp', document.getElementById('modal_attack_citybuts'), false, t.e_CityButton);
		var cityIdx = Cities.byID[uW.currentcityid].idx;
		thisCityBut = document.getElementById('ptatp_' + cityIdx);
		thisCityBut.style.opacity = '0.5';
		thisCityBut.disabled = true;
		if (document.getElementById('modal_attack_tab_4').className == 'selected' || document.getElementById('modal_attack_tab_3').className == 'selected') // don't do for attack or scout
			document.getElementById('modal_attack_citybuts').style.display = 'none';
	},
	e_CityButton: function (city) {
		document.getElementById('modal_attack_target_coords_x').value = city.x;
		document.getElementById('modal_attack_target_coords_y').value = city.y;
		uW.modal_attack_update_time();
	},
	e_changeMarchType: function (evt) {
		var t = AttackDialog;
		var marchType = parseInt(evt.target.id.substr(17));
		if (Options.attackCityPicker) {
			if (marchType == 3 || marchType == 4)
				document.getElementById('modal_attack_citybuts').style.display = 'none';
			else
				document.getElementById('modal_attack_citybuts').style.display = 'inline';
		}
		if (Options.fixKnightSelect) {
			var knightVal = 0;
			var selector = document.getElementById('modal_attack_knight');
			if (selector.length > 1 && (marchType == 4 || marchType == 2)) // if 'attack' or 'reinforce'
				knightVal = 1;
			selector.selectedIndex = knightVal;
		}
		if (Options.DontFilterTransportTroops) {
			var sf = document.getElementById('modal_attack_supplyfilter_checkbox');
			if (sf) { if (sf.checked) { sf.click(); }}
		}
	},
}
var DispReport = {
	init: function () {
		var t = DispReport;
		t.modal_InboxFunc = new CalterUwFunc('modal_messages_listshow', [
			['msghtml.join("");', 'msghtml.join("");dispInbox_hook(rslt,boxType,msghtml);']
		]);
		uW.dispInbox_hook = t.ModalInboxHook;
		t.modal_InboxFunc.setEnable(Options.enhancedinbox);
		t.modal_RptFunc = new CalterUwFunc('Messages.handleListReports', [
			['n.join("");', 'n.join("");dispRpt_hook(l,n);']
		]);
		uW.dispRpt_hook = t.ModalReportListHook;
		t.modal_RptFunc.setEnable(Options.enhancedinbox);
	},
	setEnable: function (tf) {
		var t = DispReport;
		t.modal_InboxFunc.setEnable(tf);
	},
	isDispReportAvailable: function () {
		var t = DispReport;
		return t.modal_InboxFunc.isAvailable();
	},
	ModalInboxHook: function (rslt, boxType, msghtml) {
		var t = DispReport;
		if (boxType == 'inbox') {
			msgBody = document.getElementById('modal_msg_list');
			var a = document.createElement('a');
			a.className = 'buttonDown20';
			a.innerHTML = '<span>Delete Gift Report</span>';
			a.style.float = 'left';
			a.addEventListener('click', t.checkinbox, false);
			var div = document.createElement('span');
			div.appendChild(a);
			msgBody.appendChild(div);
			var mml = document.getElementById('modal_msg_list');
			if (mml != null)
				mml.style.minHeight = '400px';
		}
	},
	checkinbox: function () {
		var t = DispReport;
		var body = document.getElementById('tbl_messages');
		var trs = body.getElementsByTagName('tr');
		var reports = [];
		for (var i = 0; i < trs.length; i++) {
			var tds = trs[i].getElementsByTagName('td');
			for (var j = 0; j < tds.length; j++) {
				if (tds[j].className == 'chkcol') {
					var checkbox = tds[j];
				}
				if (tds[j].className == 'nmcol') {
					var sender = tds[j];
				}
				if (tds[j].className == 'subjcol') {
					var subject = tds[j];
				}
			}
			reports.push({
				checkbox: checkbox,
				sender: sender,
				subject: subject
			});
		}
		t.parseGiftReport(reports);
	},
	parseGiftReport: function (rpts) {
		var t = DispReport;
		for (var i = 0; i < rpts.length; i++) {
			// logit(inspect(rpts[i].subject));
			// logit(inspect(rpts[i].sender));
			if ((rpts[i].subject.innerHTML.indexOf('¡Nuevo regalo recibido!') >= 0 || rpts[i].subject.innerHTML.indexOf('New Gift Received!') >= 0) && rpts[i].sender.innerHTML.indexOf('Kingdoms Of Camelot') >= 0) {
				rpts[i].checkbox.firstChild.checked = true;
			}
		}
		uW.messages_action("delete", "tbl_messages");
	},
	ModalReportListHook: function (rslt, msghtml) {
		var t = DispReport;
		unsafeWindow.makeReportLink = makeReportLink;
		unsafeWindow.makeReportPopup = makeReportPopup;
		if (rslt.ok) {
			msgBody = document.getElementById('modal_msg_reports_tablediv');
			var a = document.createElement('a');
			a.className = 'buttonDown20';
			a.innerHTML = '<span>Delete Wild/Barb/Transport</span>';
			a.style.float = 'left';
			a.addEventListener('click', t.checkreportlist, false);
			var div = document.createElement('span');
			div.appendChild(a);
			msgBody.appendChild(div);
			var mml = document.getElementById('modal_msg_list');
			if (mml != null) mml.style.minHeight = '400px';
			var trs = msgBody.getElementsByTagName('tr');
			for (var i = 0; i < trs.length; i++) {
				var tds = trs[i].getElementsByTagName('td');
				for (var j = 0; j < tds.length; j++) {
					if (tds[j].className == 'subjcol') {
						var original = tds[j].innerHTML;
						original = original.replace("<div>", "");
						original = original.replace("</div>", "");
						var popup = original.replace("View Report", "Pop-up");
						popup = popup.replace("View", "Pop-up");
						popup = popup.replace("Messages.viewMarchReport", "makeReportPopup");
						var makelink = original.replace("View Report", "Link");
						makelink = makelink.replace("View", "Link to FB&nbsp;&nbsp;<a href='https://apps.facebook.com/kocreportview/' target='_blank'><img style='vertical-align:text-top;' width=16 src='http://nicodebelder.eu/favicon.ico'></a>");
						makelink = makelink.replace("Messages.viewMarchReport", "makeReportLink");
						var newContent = original + " | " + popup + " | " + makelink;
						tds[j].innerHTML = "<DIV>" + newContent + "</div>";
					}
				}
			}
		}
	},
	checkreportlist: function () {
		var t = DispReport;
		var body = document.getElementById('modal_msg_reports_tablediv');
		var trs = body.getElementsByTagName('tr');
		var reports = [];
		for (var i = 0; i < trs.length; i++) {
			var tds = trs[i].getElementsByTagName('td');
			for (var j = 0; j < tds.length; j++) {
				if (tds[j].className == 'chkcol') {
					var checkbox = tds[j];
				}
				if (tds[j].className == 'nmcol') {
					var type = tds[j];
				}
				if (tds[j].className == 'subjcol') {
					var view = tds[j];
				}
			}
			reports.push({
				checkbox: checkbox,
				type: type,
				view: view
			});
		}
		t.parseBarbReport(reports);
	},
	parseBarbReport: function (rpts) {
		var t = DispReport;
		//Messages.viewMarchReport("25175",1,51,7,0,"Enemy","0","oftheNOOBS","M",4,518,355,1349852870,1,517,346,0,1550996);return false;
		//	var regex = /Messages.viewMarchReport\((["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),("[^"]+"),("[^"]+"),("[^"]+"),("[^"]+"),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+),(["0-9]+)\)/;
		var regex = /Messages.viewMarchReport\(([^"]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([^"]+),([^"]+),([^"]+),([^"]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)/;
		for (var i = 0; i < rpts.length; i++) {
			var m = regex.exec(rpts[i].view.innerHTML);
			if (m) {
				if (m[6] == m[8] && m[7] == m[9]) { //Source and target id the same.
					// continue; //Infer transport to self
				} else if (m[5] != 0) {
					continue;
				}
				rpts[i].checkbox.firstChild.checked = true;
			}
		}
		uW.Messages.deleteCheckedReports();
	}
}

function makeReportLink(rptid, side, tiletype, tilelv, defid, defnm, defgen, atknm, atkgen, marchtype, xcoord, ycoord, timestamp, unread, atkxcoord, atkycoord, side0AllianceName, side1AllianceName, link) {
	var domain = GetServerId();
	var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
	var Sversion = "";
	var tvuid = parseInt(unsafeWindow.tvuid);
	params.rid = rptid;
	if (tiletype != 999) params.side = side;
	new AsyncAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/fetchReport.php" + unsafeWindow.g_ajaxsuffix, {
		method: "post",
		parameters: params,
		onSuccess: function (transport) {
			var rslt = eval("(" + transport.responseText + ")");
			if (rslt.ok == false) {
				alert(rslt.msg);
				return;
			}
			if (!rslt.error) {
				if (typeof GM_getMetadata !== "undefined") Sversion = JSON.stringify(GM_getMetadata("version", true));
				if (typeof GM_info !== "undefined") Sversion = JSON.stringify(GM_info.script.version);
				var url = '//apps.facebook.com/kocreportview/putData.php?Sname=' + JSON.stringify(SourceName) + '&Sversion=' + Sversion + '&domain=' + domain + '&reportUnixTime=' + timestamp + '&tvuid=' + tvuid + '&side0Player=' + defnm + '&side1Player=' + atknm + '&marchType=' + marchtype + '&tileType=' + tiletype + '&report=' + JSON.stringify(rslt);
				window.open(url, '_blank');
			} else alert('kabam is having issues with reports...');
		},
		onFailure: function () {
			alert('kabam is having issues with reports...');
		},
	}, false);
}

function makeReportPopup(rptid, side, tiletype, tilelv, defid, defnm, defgen, atknm, atkgen, marchtype, xcoord, ycoord, timestamp, unread, atkxcoord, atkycoord, side0AllianceName, side1AllianceName, link) {
	Rpt.FindReport(rptid, 0);
}
var AllianceReports = {
		checkPeriod: 300,
		allianceNames: [],
		saveArfunc: uW.allianceReports,
		init: function () {
			t = AllianceReports;
			t.enable(Options.enhanceARpts);
			t.marvFunc = new CalterUwFunc('modal_alliance_report_view', [
				['getReportDisplay', 'getReportDisplay_hook2']
			]);
			t.memListFunc = new CalterUwFunc('membersInfo', [
				['commonstr.might', 'commonstr.might + "</td><td class=colcities>" + g_js_strings.commonstr.cities + "</td><td class=collast>" + g_js_strings.membersInfo.lastonline'],
				['memberInfo[key].prestige\)', 'memberInfo[key].prestige)+ "</td>");memhtml.push("<td class=colcities>" + memberInfo[key].cities + "</td>");memhtml.push("<td class=collast>" + memberInfo[key].lastLogin']
			]);
			uW.getReportDisplay_hook2 = t.getReportDisplayHook;
			uW.getmembersInfo_hook = t.getMembersInfoHook;
			t.marvFunc.setEnable(true);
			t.enable_viewmembers(Options.enhanceViewMembers);
		},
		getReportDisplayHook: function (a, b) {
			var x = '';
			try {
				x = uW.getReportDisplay(a, b);
			} catch (e) {
				x = 'Error formatting report: ' + e;
			}
			return x;
		},
		enable_viewmembers: function (tf) {
			t = AllianceReports;
			t.memListFunc.setEnable(tf);
		},
		enable: function (tf) {
			t = AllianceReports;
			if (tf)
				uW.allianceReports = t.myAllianceReports;
			else
				uW.allianceReports = t.saveArfunc;
		},
		myAllianceReports: function (pageNum) {
			var params = uW.Object.clone(uW.g_ajaxparams);
			if (pageNum)
				params.pageNo = pageNum;
			params.group = "a";
			new MyAjaxRequest(uW.g_ajaxpath + "ajax/listReports.php" + uW.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					//logit (inspect (rslt, 1, 1));        
					displayReports(rslt.arReports, rslt.arPlayerNames, rslt.arAllianceNames, rslt.arCityNames, rslt.totalPages);
				},
				onFailure: function (rslt) {},
			}, false);

			function displayReports(ar, playerNames, allianceNames, cityNames, totalPages) {
				var msg = new Array();
				var myAllianceId = getMyAlliance()[0];
				msg.push("<STYLE>.msgviewtable tbody .myCol div {margin-left:5px; overflow:hidden; white-space:nowrap; color:#000}\
            .msgviewtable tbody .myHostile div {font-weight:600; color:#600}\
            .msgviewtable tbody .myGray div {color:#666}\
            .msgviewtable tbody .myRein div {color:#050}\
            .msgviewtable tbody .myWarn div {font-weight:600; color:#442200}\
            </style>");
				msg.push("<div class='modal_msg_reports'>");
				var rptkeys = uW.Object.keys(ar);
				if (matTypeof(ar) != 'array') {
					//logit ('displayReports: '+ Options.allowAlterAR);        
					if (Options.allowAlterAR)
						msg.push("<div id='modal_alliance_reports_tablediv' class='modal_msg_list'><table width=675 cellpadding='0' cellspacing='0' class='msgviewtable reportviewtable alliancetable'>");
					else
						msg.push("<div id='modal_alliance_reports_tabledivNKA' class='modal_msg_list'><table width=675 cellpadding='0' cellspacing='0' class='msgviewtable reportviewtable alliancetable'>");
					msg.push("<thead><tr><td width=105>Date</td><td width=40>Type</td><td width=150>Attacker</td><td>Target</td><td>View</td></tr></thead><tbody>");
					for (var i = 0; i < rptkeys.length; i++) {
						var rpt = ar[rptkeys[i]];
						var colClass = '"myCol"';
						rpt.marchType = parseInt(rpt.marchType);
						rpt.side0AllianceId = parseInt(rpt.side0AllianceId);
						var targetDiplomacy = getDiplomacy(rpt.side0AllianceId);
						if (rpt.marchType == 2) {
							colClass = '"myCol myRein"';
						} else if (rpt.side1AllianceId != myAllianceId) {
							colClass = '"myCol myHostile"';
						} else {
							if (parseInt(rpt.side0TileType) < 50) { // if wild
								if (parseInt(rpt.side0PlayerId) == 0)
									colClass = '"myCol myGray"';
								else
									colClass = '"myCol myWarn"';
							} else if (parseInt(rpt.side0PlayerId) == 0) { // barb
								colClass = '"myCol myGray"';
							} else {
								if (targetDiplomacy == 'friendly')
									colClass = '"myCol myWarn"';
							}
						}
						//logit (inspect (ar, 3, 1));
						msg.push('<tr valign=top');
						if (i % 2 == 0)
							msg.push(" class=stripe");
						msg.push("><TD class=" + colClass + "><div>");
						msg.push(uW.formatDateByUnixTime(rpt.reportUnixTime));
						msg.push('<BR>Rpt&nbsp;');
						msg.push("<a onclick='FindReport(" + rpt.reportId + ",0);return false;'>#" + rpt.reportId + "</a>");
						msg.push("</div></td><TD class=" + colClass + "><div>");
						if (rpt.marchType == 1)
							msg.push(uW.g_js_strings.commonstr.transport);
						else if (rpt.marchType == 3)
							msg.push(uW.g_js_strings.commonstr.scout);
						else if (rpt.marchType == 2)
							msg.push('Reinf');
						else
							msg.push(uW.g_js_strings.commonstr.attack);
						// attacker ...
						msg.push("</div></td><TD class=" + colClass + "><div>");
						if (parseInt(rpt.side1PlayerId) != 0)
							msg.push(escape(playerNames["p" + rpt.side1PlayerId]))
						else
							msg.push('?Unknown?');
						msg.push(' ');
						msg.push(coordLink(rpt.side1XCoord, rpt.side1YCoord));
						msg.push('<BR>');
						if (rpt.side1AllianceId != myAllianceId) {
							msg.push(allianceNames['a' + rpt.side1AllianceId]);
							msg.push(' (');
							msg.push(getDiplomacy(rpt.side1AllianceId));
							msg.push(')');
						} else {
							msg.push('<BR>');
						}
						msg.push('</div></td>');
						// target ...
						msg.push("<TD class=" + colClass + "><DIV>");
						var type = parseInt(rpt.side0TileType);
						if (type < 50) { // wild
							msg.push(uW.g_mapObject.types[type].toString().capitalize());
							msg.push(" Lvl " + rpt.side0TileLevel)
							if (parseInt(rpt.side0PlayerId) != 0) { // IF OWNED, show owner ...
								msg.push(' [');
								msg.push(escape(playerNames["p" + rpt.side0PlayerId]));
								msg.push('] ');
							}
						} else {
							if (parseInt(rpt.side0PlayerId) == 0) { //  barb
								msg.push(uW.g_js_strings.commonstr.barbariancamp);
								msg.push(" Lvl " + rpt.side0TileLevel)
							} else { // city
								msg.push(escape(playerNames["p" + rpt.side0PlayerId]));
								msg.push(' - ');
								msg.push(cityNames['c' + rpt.side0CityId]);
							}
						}
						msg.push(' ');
						msg.push(coordLink(rpt.side0XCoord, rpt.side0YCoord));
						if (rpt.side0AllianceId != 0 && rpt.side0AllianceId != myAllianceId) {
							msg.push('<BR>');
							msg.push(allianceNames['a' + rpt.side0AllianceId]);
							msg.push(' (');
							msg.push(targetDiplomacy);
							msg.push(')');
						}
						/***
        
MY reports, reins works ...
<div><a href="#" onclick="jQuery('#modal_msg_body').trigger('viewReinforcedReport', ['6076798','67674','Elroy','IV','13412958','Duke_Swan','6329','Erisvil',662,477]);return false;">View Report</a></div>

    
OK: <a onclick=" $(&quot;modal_alliance_reports_tabledivNKA&quot;).id=&quot;modal_alliance_reports_tablediv&quot;; modal_alliance_report_view(&quot;6044155&quot;,0,51,9,2282354,&quot;Jetson&quot;,&quot;M&quot;,&quot;Joe7z6bq&quot;,&quot;M&quot;,4,668,437,1299747584,0,643,407);return false;">View</a></div>           
ERROR (Reinf): <a onclick=" $(&quot;modal_alliance_reports_tabledivNKA&quot;).id=&quot;modal_alliance_reports_tablediv&quot;; modal_alliance_report_view(&quot;6043602&quot;,1,51,9,13487684,&quot;Fred8135i&quot;,&quot;M&quot;,&quot;Jetson&quot;,&quot;M&quot;,2,188,696,1299746211,0,23,518);return false;">View</a>
modal_alliance_report_view("6043602",1,51,9,13487684,"Fred8135i","M","Jetson","M",2,188,696,1299746211,0,23,518);return false;'>View</a>                        
modal_alliance_report_view(&quot;6043602&quot;,1,51,9,13487684,&quot;Fred8135i&quot;,&quot;M&quot;,&quot;Jetson&quot;,&quot;M&quot;,2,188,696,1299746211,0,23,518);return false;">View Report</a></div>            
modal_alliance_report_view("6043602",1,51,9,13487684,"Fred8135i","M","Jetson","M",2,188,696,1299746211,0,23,518);return false;">View Report</a></div>            
***/
						// 'view report' link ...
						if (rpt.marchType != 2) {
							if (Options.allowAlterAR)
								msg.push("</div></td><TD class=" + colClass + "><div><a onclick=' modal_alliance_report_view(\""); // ONCLICK ???
							else
								msg.push("</div></td><TD class=" + colClass + "><div><a onclick=' $(\"modal_alliance_reports_tabledivNKA\").id=\"modal_alliance_reports_tablediv\"; modal_alliance_report_view(\""); // ONCLICK ???
							msg.push(rpt.reportId);
							msg.push('",');
							if (parseInt(rpt.side1AllianceId) == parseInt(Seed.allianceDiplomacies.allianceId))
								msg.push(1);
							else
								msg.push(0);
							msg.push(",");
							msg.push(rpt.side0TileType);
							msg.push(",");
							msg.push(rpt.side0TileLevel);
							msg.push(",");
							msg.push(rpt.side0PlayerId);
							msg.push(',"');
							if (parseInt(rpt.side0PlayerId) != 0)
								msg.push(escape(playerNames["p" + rpt.side0PlayerId]));
							else
								msg.push(uW.g_js_strings.commonstr.enemy);
							msg.push('","');
							if (parseInt(rpt.side0PlayerId) != 0)
								msg.push(escape(playerNames["g" + rpt.side0PlayerId]));
							else
								msg.push(0)
							msg.push('","');
							if (parseInt(rpt.side1PlayerId) > 0)
								msg.push(escape(playerNames["p" + rpt.side1PlayerId]));
							msg.push('","');
							if (parseInt(rpt.side1PlayerId) != 0)
								msg.push(escape(playerNames["g" + rpt.side1PlayerId]));
							msg.push('",');
							msg.push(rpt.marchType);
							msg.push(",");
							msg.push(rpt.side0XCoord);
							msg.push(",");
							msg.push(rpt.side0YCoord);
							msg.push(",");
							msg.push(rpt.reportUnixTime);
							msg.push(",");
							if (parseInt(rpt.reportStatus) == 2)
								msg.push(1);
							else
								msg.push(0);
							if (rpt.side1XCoord) {
								msg.push(",");
								msg.push(rpt.side1XCoord);
								msg.push(",");
								msg.push(rpt.side1YCoord)
							} else {
								msg.push(",,");
							}
							msg.push(");return false;'>View</a></div></td></tr>");
						} else {
							// reinforcement!!
							msg.push("</div></td><TD class=" + colClass + "><div><a onclick='FindReport(\""); // ONCLICK ???
							msg.push(rpt.reportId);
							msg.push("\",0);return false;'>View</a></div></td></tr>");
						}
					}
					msg.push("</tbody></table></div>");
				}
				msg.push("</div><div id='modal_report_list_pagination'></div>");
				document.getElementById('allianceContent').innerHTML = msg.join("");
				if (pageNum) {
					uW.ctrlPagination("modal_report_list_pagination", totalPages, "allianceReports", pageNum)
				} else {
					uW.ctrlPagination("modal_report_list_pagination", totalPages, "allianceReports")
				}
			}
		},
	} // end AllianceReports singleton
unsafeWindow.FindReport = Rpt.FindReport;
/************************ Food Alerts *************************/
/*
var FoodAlerts = {

  init : function (){
   var f = FoodAlerts;
   f.e_eachMinute();
  },

  minuteTimer : null,

  e_eachMinute : function (){  
    var f = FoodAlerts;
    var now = unixTime();
      row = [];

      for(i=0; i < Cities.numCities; i++) {
        var rp = getResourceProduction (Cities.cities[i].id);
        var foodleft = parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][0])/3600;
        var usage = rp[1] - parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][3]);
        row[i] = rp[1] - usage;
          var timeLeft = parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][0]) / 3600 / (0-usage) * 3600;
          var msg = '';
        if (usage < 0) { 
    if (Options.enableFoodTower && timeLeft<(6*3600)) {
                msg += 'My city ' + Cities.cities[i].name.substring(0,10) + ' (' +
                       Cities.cities[i].x +','+ Cities.cities[i].y + ')';
                msg += ' is low on food. Remaining: '+addCommasWhole(foodleft)+' ('+timestrShort(timeLeft)+') Upkeep: '+addCommas(usage);
                sendChat ("/a " + msg);
          }
    }
      } 
  f.minuteTimer = setTimeout (f.e_eachMinute, 1800000);
  }, 
}
*/
/************************ Tower Alerts ************************/
var TowerAlerts = {
	viewImpendingFunc: null,
	generateIncomingFunc: null,
	fixTargetEnabled: false,
	towerMarches: {}, // track all marches that have been posted to alliance chat
	init: function () {
		var t = TowerAlerts;
		var s = GM_getValue('towerMarches_' + GetServerId());
		if (s != null)
			t.towerMarches = JSON2.parse(s);
 
		t.viewImpendingFunc = new CalterUwFunc('attack_viewimpending_view', [
			[/Modal.showModal\((.*)\)/im, 'Modal.showModal\($1\); ptViewImpending_hook(a);']
		]);
		uW.ptViewImpending_hook = t.viewImpending_hook;
		t.viewImpendingFunc.setEnable(true);
		t.generateIncomingFunc = new CalterUwFunc('attack_generateincoming', [
			[/d\s*=\s*true/i, 'd = ptGenerateIncoming_hook();']
		]);
		uW.ptGenerateIncoming_hook = t.generateIncoming_hook;
	},
	// fix 'target', add button  
	viewImpending_hook: function (atkinc) {
		var t = TowerAlerts;
		var div = document.getElementById('modal_attackimpending_view');
		var isFalse = false;
		if (t.fixTargetEnabled) {
			var city = Cities.byID[atkinc.toCityId];
			var target = '';
			if (!city || (atkinc.marchType != 3 && atkinc.marchType != 4)) {
				target = '<B>FALSE REPORT!</b>';
				isFalse = true;
			} else if (city.tileId == atkinc.toTileId) {
				target = city.name + ' (' + city.x + ',' + city.y + ')';
			} else {
				wilds = Seed.wilderness['city' + atkinc.toCityId];
				m = '';
				for (k in wilds) {
					if (wilds[k].tileId == atkinc.toTileId) {
						m = 'at ' + wilds[k].xCoord + ',' + wilds[k].yCoord;
						break;
					}
				}
				target = city.name + ', <B>WILD ' + m + '</b>';
			}
			div.childNodes[0].innerHTML = '<B>Target: </b>' + target;
		}
		if (!isFalse) {
			var d = document.createElement('div');
			d.innerHTML = '<BR><TABLE><TR><TD><a id=towerPostToChat class=button20><span>Post to Alliance Chat</span></a></td></tr></table>';
			div.appendChild(d);
			document.getElementById('towerPostToChat').addEventListener('click', function () {
				t.e_buttonPostToChat(atkinc)
			}, false);
		}
	},
	// fix false reports  
	generateIncoming_hook: function () {
		return false;
	},
	enableFixFalseReports: function (tf) {
		var t = TowerAlerts;
		t.generateIncomingFunc.setEnable(tf);
	},
	enableFixTarget: function (tf) {
		var t = TowerAlerts;
		t.fixTargetEnabled = tf;
	},
	isFixTargetAvailable: function () {
		var t = TowerAlerts;
		return t.viewImpendingFunc.isAvailable();
	},
	isFixFalseReportsAvailable: function () {
		var t = TowerAlerts;
		return t.generateIncomingFunc.isAvailable();
	},
	postToChatOptions: {
		aChat: false
	},
	setPostToChatOptions: function (obj) {
		var t = TowerAlerts;
		t.postToChatOptions = obj;
		clearTimeout(t.secondTimer);
	},
	e_buttonPostToChat: function (march) {
		var t = TowerAlerts;
		t.postToChat(march, true);
		uW.Modal.hideModal();
	},
	postToChat: function (m, force) {
		var t = TowerAlerts;
		if (DEBUG_TRACE) logit("checkTower(): INCOMING at " + unixTime() + ": \n" + inspect(m, 8, 1));
		if (m.marchType == null) // bogus march (returning scouts)
			return;
		if (ENABLE_TEST_TAB) Tabs.Test.addDiv("Incoming!<BR><PRE style='margin:0px;'>" + inspect(m, 8, 1) + '</pre>');
		if (m.marchType == 3) {
			if (!t.postToChatOptions.scouting && !force)
				return;
			atkType = 'scouted';
		} else if (m.marchType == 4) {
			atkType = 'attacked';
		} else {
			return;
		}
		var target, atkType, who;
		var city = Cities.byID[m.toCityId];
		if (city.tileId == m.toTileId)
			target = 'city at ' + city.x + ',' + city.y;
		else {
			if (!t.postToChatOptions.wilds && !force)
				return;
			target = 'wilderness';
			for (k in Seed.wilderness['city' + m.toCityId]) {
				if (Seed.wilderness['city' + m.toCityId][k].tileId == m.toTileId) {
					target += ' at ' + Seed.wilderness['city' + m.toCityId][k].xCoord + ',' + Seed.wilderness['city' + m.toCityId][k].yCoord;
					break;
				}
			}
		}
		if (Seed.players['u' + m.pid])
			who = Seed.players['u' + m.pid].n;
		else if (m.players && m.players['u' + m.pid])
			who = m.players['u' + m.pid].n;
		else
			who = 'Unknown';
		if (m.fromXCoord)
			who += ' at ' + m.fromXCoord + ',' + m.fromYCoord;
		var msg = '';
		if (!force)
			msg = t.postToChatOptions.aPrefix + ' ';
		msg += 'My ' + target + ' is being ' + atkType + ' by ' + who + '. Incoming Troops (arriving in ' +
			uW.timestr(parseInt(m.arrivalTime - unixTime())) + ') : ';
		var totTroops = 0;
		for (k in m.unts) {
			var uid = parseInt(k.substr(1));
			msg += m.unts[k] + ' ' + uW.unitcost['unt' + uid][0] + ', ';
			totTroops += m.unts[k];
		}
		if ((totTroops < t.postToChatOptions.minTroops) && !force)
			return;
		msg = msg.slice(0, -2);
		msg += '.';
		if (city.tileId == m.toTileId) {
			var emb = getCityBuilding(m.toCityId, 8);
			if (emb.count > 0) {
				var availSlots = emb.maxLevel;
				for (k in Seed.queue_atkinc) {
					if (Seed.queue_atkinc[k].marchType == 2 && Seed.queue_atkinc[k].toCityId == m.toCityId && Cities.byID[Seed.queue_atkinc[k].fromCityId] == null) {
						//         if (Seed.queue_atkinc[k].marchType==2 && Cities.byID[Seed.queue_atkinc[k].fromCityId]==null){
						--availSlots;
					}
				}
				msg += ' My embassy has ' + availSlots + ' of ' + emb.maxLevel + ' slots available.';
			}
		}
		if (ENABLE_TEST_TAB) Tabs.Test.addDiv(msg);
		if (SEND_ALERT_AS_WHISPER)
			sendChat("/" + Seed.player.name + ' ' + msg); // Whisper to myself
		else
			sendChat("/a " + msg); // Alliance chat
	},
}

function parseIntNan(n) {
	x = parseInt(n, 10);
	if (isNaN(x))
		return 0;
	return x;
}

function parseIntZero(n) {
	if (n == '')
		return 0;
	return parseInt(n, 10);
}
/*********************************** Players TAB ***********************************/
function officerId2String(oid) {
	if (oid == null)
		return '';
	else if (oid == 3)
		return uW.allianceOfficerTypeMapping[3];
	else if (oid == 2)
		return uW.allianceOfficerTypeMapping[2];
	else if (oid == 1)
		return uW.allianceOfficerTypeMapping[1];
	else if (oid == 4)
		return uW.allianceOfficerTypeMapping[4];
	return '';
}
Tabs.AllianceList = {
	tabOrder: 25,
	tabLabel: uW.g_js_strings.commonstr.player,
	cont: null,
	dat: [],
	clickedAlly: false,
	lastLogin: 0,
	warStatus: 0,
	/***
ajax/viewCourt.php:
  (boolean) ok = true
  (array) courtItems = 

  (string) dailyActionFlag = 0
  (object) playerInfo = [object Object]
    (string) datejoinUnixTime = 1294440708
    (string) truceExpireUnixTime = 0
    (string) userId = 4394121
    (string) displayName = Vakasade
    (string) email = 
    (string) fbuid = 100000977751880
    (string) playerSex = F
    (string) usertype = 1
    (string) status = 1
    (string) dateJoined = 2011-01-07 14:51:48
    (string) lastLogin = 2011-03-13 13:11:34
    (string) eventTimestamp = 0000-00-00 00:00:00
    (string) eventStatus = 1
    (string) warStatus = 1
    (string) allianceId = 85
    (number) might = 1192710
    (string) title = 57
    (string) truceExpireTimestamp = 0000-00-00 00:00:00
    (string) fogExpireTimestamp = 0000-00-00 00:00:00
    (string) cnt_newmsg = 0
    (string) cnt_friendreq = 0
    (string) cnt_logins = 3910
    (string) cnt_passreset = 0
    (string) cnt_connections = 0
    (string) avatarId = 11
    (undefined) photo_host: null = null
    (undefined) photo_dir: null = null
    (undefined) photo_subdir: null = null
    (undefined) photo_name: null = null
    (string) allianceName = The Flying Circus

  (number) cityCount = 2
  (undefined) errorMsg: null = null
***/
	fetchPlayerCourt: function (uid, notify) {
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.pid = uid;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/viewCourt.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				new Sendcourtdata(rslt);
				//logit ("ajax/viewCourt.php\n"+ inspect (rslt, 3, 1));      
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify(rslt);
			},
		});
	},
	fetchTEST: function (pageNum, notify) { // as in alliance list, sorted by rank, 10 per page
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.pageNo = 1;
		params.numPerPage = 100;
		params.perPage = 100;
		params.results = 100;
		params.numResults = 100;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/allianceGetMembersInfo.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				logit("ajax/allianceGetMembersInfo.php:\n" + inspect(rslt, 5, 1));
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	init: function (div) {
		var t = Tabs.AllianceList;
		t.cont = div;
		uW.PTgetMembers = t.eventGetMembers;
		uW.PTPaintMembers = t.GetDataForMap;
		uW.PTpd = t.clickedPlayerDetail;
		uW.PTpl = t.clickedPlayerLeaderboard;
		uW.PTpl2 = t.clickedPlayerLeaderboard2;
		uW.PTalClickPrev = t.eventListPrev;
		uW.PTalClickNext = t.eventListNext;
		uW.PCplo = t.clickedPlayerGetLastLogin;
		uW.PTPlayClick = t.clickedPlayerInAll;
		Lastlogin = 0;
		t.show();
	},
	hide: function () {},
	show: function () {
		var t = Tabs.AllianceList;
		if (t.state == null) {
			if (getMyAlliance()[0] == 0) {
				t.cont.innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.membersInfo.youmustbelong + '</center>';
				t.state = 1;
				return;
			}
			var m = '<DIV class=ptentry><TABLE width=100% cellpadding=0>';
			m += '<TD width = "100px" ; border:none"><a href="https://code.google.com/p/koc-power-tools/wiki/HowtoPlayers" target="_blank">HELP</a></td></tr>';
			m += '<TR><TD class=xtab align=right></td><TD class=xtab>' + uW.g_js_strings.modal_fow_leaderboard.searchuser + ': &nbsp; </td>';
			m += ' <TD width=80% class=xtab><INPUT id=allPlayName size=20 type=text/> &nbsp;';
			m += '<INPUT id=playSubmit type=submit value="' + uW.g_js_strings.modal_fow_leaderboard.finduser + '" /> &nbsp; <INPUT id=ffbuidsubmit type=submit value="UID" /></td>\
            <TD class="xtab ptErrText"><SPAN id=ptplayErr></span></td></tr>\
          <TR><TD class=xtab></td><TD class=xtab>' + uW.g_js_strings.setDiplomacyWindow.srchalli + ': &nbsp;</td>\
            <TD class=xtab><INPUT id=allAllName type=text /> &nbsp; <INPUT id=allSubmit type=submit value="' + uW.g_js_strings.modal_fow_leaderboard.findalli + '" /></td>\
            <TD class="xtab ptErrText"><SPAN id=ptallErr></span></td></tr>\
           <TR><TD class=xtab><INPUT align=left id=allListSubmit type=submit value="' + uW.g_js_strings.commonstr.alliances + '" /></td>\
            <TD class=xtab><INPUT align=right id=idMyAllSubmit type=submit value="' + getMyAlliance()[1] + '"/>\
            <TD><INPUT id=pbShowFriendlies type=CHECKBOX>Show Friendlys &nbsp;<INPUT id=pbShowHostiles type=CHECKBOX>Show Hostiles</td>\
             <TD class=xtab></td><TD class=xtab><span align=right <b>' + uW.g_js_strings.attack_generateincoming.estimatedarrival + ': </b></span>\
            <div><select id="idFindETASelect">\
        <option value="0,0" > -- Select -- </option>\
        <option value="0,180" >' + uW.unitcost["unt1"][0] + '</option>\
        <option value="0,200" > ' + uW.unitcost["unt2"][0] + ' </option>\
        <option value="0,3000" > ' + uW.unitcost["unt3"][0] + ' </option>\
        <option value="0,300" > ' + uW.unitcost["unt4"][0] + ' </option>\
        <option value="0,275" > ' + uW.unitcost["unt5"][0] + ' </option>\
        <option value="0,250" > ' + uW.unitcost["unt6"][0] + ' </option>\
        <option value="1,1000" > ' + uW.unitcost["unt7"][0] + ' </option>\
        <option value="1,750" > ' + uW.unitcost["unt8"][0] + ' </option>\
        <option value="1,150" > ' + uW.unitcost["unt9"][0] + ' </option>\
        <option value="1,100" > ' + uW.unitcost["unt10"][0] + ' </option>\
        <option value="1,120" > ' + uW.unitcost["unt11"][0] + ' </option>\
        <option value="1,80" > ' + uW.unitcost["unt12"][0] + ' </option>\
        </select></div>\
        </td></tr>\
        <TR><TD colspan=5><DIV id=pbFriendlyDivs style="max-width:725px; white-space:pre-wrap"></div></td>\
        <TR><TD colspan=5><DIV id=pbHostilesDivs style="max-width:725px; white-space:pre-wrap"></div></td>\
         </table><span style="vertical-align:middle;" id=altInput></span></div><SPAN id=allListOut></span>';
			t.cont.innerHTML = m;
			document.getElementById('allPlayName').addEventListener('keypress', function (e) {
				if (e.which == 13) document.getElementById('playSubmit').click();
			}, false);
			document.getElementById('allAllName').addEventListener('keypress', function (e) {
				if (e.which == 13) document.getElementById('allSubmit').click();
			}, false);
			document.getElementById('pbShowFriendlies').addEventListener('change', function () {
				if (this.checked) {
					t.paintFriendlyDiv();
				} else {
					document.getElementById('pbFriendlyDivs').innerHTML = '';
				}
			});
			document.getElementById('pbShowHostiles').addEventListener('change', function () {
				if (this.checked) {
					t.paintHostilesDiv();
				} else {
					document.getElementById('pbHostilesDivs').innerHTML = '';
				}
			});
			document.getElementById('allSubmit').addEventListener('click', t.eventSubmit, false);
			document.getElementById('playSubmit').addEventListener('click', t.eventPlayerSubmit, false);
			document.getElementById('ffbuidsubmit').addEventListener('click', t.eventPlayerUIDSubmit, false);
			document.getElementById('allAllName').addEventListener('focus', function () {
				document.getElementById('ptallErr').innerHTML = '';
			}, false);
			document.getElementById('allPlayName').addEventListener('focus', function () {
				document.getElementById('ptplayErr').innerHTML = '';
			}, false);
			document.getElementById('allListSubmit').addEventListener('click', t.eventListSubmit, false);
			document.getElementById('idMyAllSubmit').addEventListener('click', t.showMyAlliance, false);
			document.getElementById('idFindETASelect').addEventListener('click', t.handleEtaSelect, false);
			document.getElementById('idFindETASelect').disabled = true;
			t.ModelCity = Cities.cities[0];
			t.curPage = 0;
			t.MaxPage = -1;
			t.state = 1;
		}
	},
	paintFriendlyDiv: function () {
		var t = Tabs.AllianceList;
		var mess = ' ----- Friendlys ----- <BR>';
		for (k in Seed.allianceDiplomacies.friendly) {
			mess += '<INPUT id=pbFriendly_' + k + ' type=submit value="' + Seed.allianceDiplomacies.friendly[k].allianceName + '">&nbsp;'; //
		}
		document.getElementById('pbFriendlyDivs').innerHTML = mess;
		for (q in Seed.allianceDiplomacies.friendly) {
			document.getElementById('pbFriendly_' + q).addEventListener('click', function () {
				//alert(this.id.substr(12))
				uW.PTgetMembers(this.id.substr(12))
			});
		}
	},
	paintHostilesDiv: function () {
		var t = Tabs.AllianceList;
		var mess = ' ----- Hostiles ----- <BR>';
		for (k in Seed.allianceDiplomacies.hostile) {
			mess += '<INPUT id=pbHostile_' + k + ' type=submit value="' + Seed.allianceDiplomacies.hostile[k].allianceName + '">&nbsp;'; //
		}
		document.getElementById('pbHostilesDivs').innerHTML = mess;
		for (q in Seed.allianceDiplomacies.hostile) {
			document.getElementById('pbHostile_' + q).addEventListener('click', function () {
				//alert(this.id.substr(11))
				uW.PTgetMembers(this.id.substr(11))
			});
		}
	},
	pName: '',
	eventPlayerSubmit: function () {
		var t = Tabs.AllianceList;
		document.getElementById('ptplayErr').innerHTML = '';
		var name = document.getElementById('allPlayName').value;
		name = name.replace(/\'/g, "_").replace(/\,/g, "_").replace(/\-/g, "_");
		t.pName = name;
		if (name.length < 3) {
			document.getElementById('ptplayErr').innerHTML = uW.g_js_strings.getAllianceSearchResults.entryatleast3;
			return;
		}
		document.getElementById('altInput').innerHTML = '';
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		t.fetchPlayerList(name, t.eventGotPlayerList);
	},
	eventGotPlayerList: function (rslt) {
		var t = Tabs.AllianceList;
		if (!rslt.ok) {
			//      document.getElementById('allListOut').innerHTML = rslt.errorMsg;
			document.getElementById('allListOut').innerHTML = rslt.msg;
			return;
		}
		t.playerList = rslt.matchedUsers;
		var uList = [];
		for (k in rslt.matchedUsers)
			uList.push(rslt.matchedUsers[k].userId);
		t.fetchPlayerStatus(uList, function (r) {
			t.eventGotPlayerOnlineList(r)
		});
	},
	eventGotPlayerOnlineList: function (rslt) {
		var t = Tabs.AllianceList;
		if (!rslt.ok) {
			document.getElementById('allListOut').innerHTML = rslt.errorMsg;
			return;
		}
		var m = '<DIV class=ptstat>' + uW.g_js_strings.recommendSelectedFriends.playersrch + ': <B>"' + t.pName + '"</b></div>\
      <DIV style="height:575px; max-height:575px; overflow-y:auto">\
      <TABLE width=100% align=center class=ptTab cellspacing=0><TR style="font-weight:bold"><TD>' + uW.g_js_strings.commonstr.nametx + ' &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp</td>\
      <TD align=right>UID &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp</td><TD>' + uW.g_js_strings.commonstr.might + ' &nbsp &nbsp</td><TD> &nbsp; ' + uW.g_js_strings.commonstr.online + '</td><TD> &nbsp;Facebook &nbsp; </td><TD width=75%>' + uW.g_js_strings.commonstr.search + ' </td></tr>';
		var row = 0;
		var cl = '';
		for (k in t.playerList) {
			var u = t.playerList[k];
			if (++row % 2)
				cl = 'class=ptOddrow ';
			else
				cl = '';
			m += '<TR ' + cl + 'valign=top><TD>' + u.genderAndName + '</td><TD><A target="_tab" href="http://kocmon.com/' + GetServerId() + '/players/' + u.userId + '">' + u.userId + '</a></td><TD align=right>' + addCommas(u.might) + '</td>\
          <TD>' + (rslt.data[u.userId] ? "&nbsp;<SPAN class=boldDarkRed>" + uW.g_js_strings.commonstr.online + "</span>" : "") + '</td>\
          <TD align=center><A target="_tab" href="https://www.facebook.com/profile.php?id=' + u.fbuid + '">' + uW.g_js_strings.commonstr.profile + '</a></td>\
          <TD><SPAN onclick="PTpd(this, ' + u.userId + ')"><A>' + uW.g_js_strings.modaltitles.memberdetails + '</a> &nbsp; <BR></span><SPAN onclick="PTpl2(this,' + u.userId + ',' + rslt.data[u.userId] + ')"><A>' + uW.g_js_strings.modaltitles.leaderboard + '</a><BR></span><SPAN onclick="PCplo(this, \'' + u.userId + '\')"><A>' + uW.g_js_strings.modal_messages_viewreports_view.lastlogin + '</a></span></td></tr>';
		}
		m += '</table></div>';
		document.getElementById('allListOut').innerHTML = m;
	},
	asName: '',
	eventPlayerUIDSubmit: function () {
		var t = Tabs.AllianceList;
		document.getElementById('ptplayErr').innerHTML = '';
		var uid = document.getElementById('allPlayName').value;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.uid = uid;
		AjaxRequest(uW.g_ajaxpath + "ajax/getUserGeneralInfo.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (transport) {
				var rslt = eval("(" + transport.responseText + ")");
				if (rslt.ok) {
					test = rslt.userInfo[0].name;
					document.getElementById('altInput').innerHTML = '';
					document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
					t.fetchPlayerList(test, t.eventGotPlayerList);
				}	
				else document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.barbarian.erroroccured + '</center>';
			},
			onFailure: function (rslt) {
				document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.errorcode.err_602 + '</center>';
				return;
			},
		});
	},
	clickedPlayerDetail: function (span, uid) {
		var t = Tabs.AllianceList;
		span.onclick = '';
		span.innerHTML = uW.g_js_strings.commonstr.search + ': ' + uW.g_js_strings.modaltitles.memberdetails + " ...";
		t.fetchPlayerInfo(uid, function (r) {
			t.gotPlayerDetail(r, span)
		});
	},
	clickedPlayerLeaderboard: function (span, uid) {
		var t = Tabs.AllianceList;
		span.onclick = '';
		span.innerHTML = uW.g_js_strings.commonstr.search + ': ' + uW.g_js_strings.modaltitles.leaderboard + " ...";
		t.fetchLeaderboard(uid, function (r) {
			t.gotPlayerLeaderboard(r, span)
		});
	},
	clickedPlayerLeaderboard2: function (span, uid, status) {
		var t = Tabs.AllianceList;
		span.onclick = '';
		span.innerHTML = uW.g_js_strings.commonstr.search + ': ' + uW.g_js_strings.modaltitles.leaderboard + " ...";
		t.fetchLeaderboard(uid, function (r) {
			t.gotPlayerLeaderboard2(r, span, uid, status)
		});
	},
	clickedPlayerGetLastLogin: function (span, uid) {
		var t = Tabs.AllianceList;
		span.onclick = '';
		span.innerHTML = uW.g_js_strings.commonstr.search + ': ' + uW.g_js_strings.modal_messages_viewreports_view.lastlogin + " ...";
		t.fetchPlayerLastLogin(uid, function (r) {
			t.gotPlayerLastLogin(r, span)
		});
	},
	gotPlayerLeaderboard2: function (rslt, span, uid, status) {
		var t = Tabs.AllianceList;
		var prestige = "";
		if (!rslt.ok) {
			span.innerHTML = rslt.errorMsg;
			return;
		}
		t.dat = [];
		var myA = getMyAlliance();
		if (rslt.totalResults == 0) {
			t.fetchPlayerLastLogin(uid, function (r) {
				t.displayPlayer("", r)
			});
			return;
		}
		var p = rslt.results[0];
		if (myA[0] == p.allianceId)
			t.friendEta = true;
		else
			t.friendEta = false;
		for (var c = 0; c < p.cities.length; c++) {
			if (p.cities[c].prestigeType == 0) prestige = "";
			if (p.cities[c].prestigeType == 1) prestige = "Druid";
			if (p.cities[c].prestigeType == 2) prestige = "Fey";
			if (p.cities[c].prestigeType == 3) prestige = "Briton";
			if (p.cities[c].prestigeLevel == 0) {
				prestigelvl = "";
			} else {
				prestigelvl = " (" + p.cities[c].prestigeLevel + ")";
			}
			ExpTime = t.convertTime(new Date(p.cities[c].prestigeBuffExpire.replace(" ", "T")));
			if ((ExpTime + (3600 * 24) < unixTime()) || isNaN(ExpTime)) {
				prestigeexp = "";
			} else {
				prestigeexp = t.getDuration(p.cities[c].prestigeBuffExpire);
			}
			t.dat.push([p.displayName, parseInt(p.might), p.officerType, parseInt(p.numCities), parseInt(p.cities[c].tileLevel),
				parseInt(p.cities[c].xCoord), parseInt(p.cities[c].yCoord), p.cities[c].cityName, 0, status, 0, p.userId, prestige, p.userId, prestigelvl, prestigeexp, p.cities[c].prestigeBuffExpire, prestige + prestigelvl
			]);
		}
		t.setDistances(Cities.cities[0].x, Cities.cities[0].y);
		t.ModelCity = Cities.cities[0];
		t.setEta();
		t.fetchPlayerLastLogin(uid, function (r) {
			t.displayPlayer(p.allianceName, r)
		});
		//t.fetchPlayerLastLogin();
		//t.displayPlayer (p.allianceId);
	},
	gotPlayerLeaderboard: function (rslt, span) {
		var t = Tabs.AllianceList;
		if (!rslt.ok) {
			span.innerHTML = rslt.errorMsg;
			return;
		}
		if (rslt.totalResults == 0) {
			span.innerHTML = '<B>' + uW.g_js_strings.commonstr.leaderboard + ': </b>' + uW.itemlist.i10021.name + '?<BR>';
			return;
		}
		var p = rslt.results[0];
		var an = p.allianceName;
		if (!an || an == '')
			an = 'none';
		else
			an += ' (' + officerId2String(p.officerType) + ')';
		pStr = JSON2.stringify(p);
		//logit (pStr);
		m = '<TABLE cellspacing=0 class=ptTab><TR><TD><B>' + uW.g_js_strings.commonstr.leaderboard + ': </b></td><TD colspan=2>' + uW.g_js_strings.commonstr.might + ': ' + p.might + ' &nbsp; ' + uW.g_js_strings.commonstr.alliance + ': ' + an + '</td></tr>';
		for (var i = 0; i < p.cities.length; i++) {
			var c = p.cities[i];
			var created = '';
			if (c.dateCreated && c.dateCreated.substr(0, 2) == '20')
				created = ' &nbsp; created: ' + c.dateCreated.substr(0, 10);
			m += '<TR><TD align=right><B>City #' + (i + 1) + ':</b></td><TD> &nbsp; ' + c.cityName + ' (<a onclick="ptGotoMap (' + c.xCoord + ',' + c.yCoord + ')">' + c.xCoord + ',' + c.yCoord + '</a>)</td><TD width=75%> &nbsp; level: ' + c.tileLevel + ' &nbsp; status: ' + cityStatusString(c.cityStatus) + created + '</td></tr>';
		}
		span.innerHTML = m + '</table>';
	},
	gotPlayerDetail: function (rslt, span) {
		var t = Tabs.AllianceList;
		if (!rslt.ok) {
			span.innerHTML = rslt.errorMsg;
			return;
		}
		var u = rslt.userInfo[0];
		var a = 'None';
		if (u.allianceName)
			a = u.allianceName + ' (' + getDiplomacy(u.allianceId) + ')';
		var m = '<DIV style="max-width:375x; width:375px; overflow-y:auto"><TABLE cellspacing=0 class=ptTab><TR><TD><B>Details:</b> &nbsp; </td><TD>' + uW.g_js_strings.commonstr.alliance + ': ' + a + ' &nbsp; ' + uW.g_js_strings.commonstr.cities + ': ' + u.cities + ' &nbsp; ' + uW.g_js_strings.commonstr.population + ': ' + u.population + '</td></tr><TR><TD></td><TD></div>' + uW.g_js_strings.commonstr.province + ': ';
		var pids = u.provinceIds.split(',');
		var p = [];
		for (var i = 0; i < pids.length; i++)
			p.push(uW.provincenames['p' + pids[i]]);
		span.innerHTML = m + p.join(', ') + '</td></tr></table>';
	},
	eventMyAllianceSubmit: function () {
		var t = Tabs.AllianceList;
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		t.fetchAllianceMemberList(getMyAlliance()[0], null, t.eventGotMemberList);
	},
	aName: '',
	eventSubmit: function () {
		var t = Tabs.AllianceList;
		document.getElementById('ptallErr').innerHTML = '';
		if (t.clickedAlly) {
			t.aName = t.clickedAllyName;
		} else {
			t.aName = document.getElementById('allAllName').value;
		}
		if (t.aName.length < 3) {
			document.getElementById('ptallErr').innerHTML = uW.g_js_strings.getAllianceSearchResults.entryatleast3;
			return;
		}
		var myA = getMyAlliance();
		document.getElementById('altInput').innerHTML = '';
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		if (myA[0] != 0 && myA[1].toLowerCase().indexOf(t.aName.toLowerCase()) >= 0)
			t.fetchAllianceList(t.aName, myA[0], t.eventGotAllianceList);
		else
			t.fetchAllianceList(t.aName, null, t.eventGotAllianceList);
	},
	eventListSubmit: function () {
		var t = Tabs.AllianceList;
		var myA = getMyAlliance();
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		if (myA[0] != 0) {
			t.curPage = 1;
			t.fetchOtherAllianceInfo(1, t.eventGotOtherAlliancePage);
			//document.getElementById('allGotoPage').disabled = false;
		} else {
			document.getElementById('allListOut').innerHTML = uW.g_js_strings.membersInfo.youmustbelong;
		}
	},
	eventGotAllianceList: function (rslt) {
		var t = Tabs.AllianceList;
		if (!rslt.ok) {
			document.getElementById('allListOut').innerHTML = rslt.errorMsg;
			return;
		}
		var m = '<DIV class=ptstat>' + uW.g_js_strings.commonstr.alliances + '<B>"' + t.aName + '"</b></div>\
    <TABLE><TR style="font-weight:bold"><TD class=xtab>' + uW.g_js_strings.commonstr.alliance + '</td><TD class=xtab>' + uW.g_js_strings.commonstr.rank + '</td><TD class=xtab>' + uW.g_js_strings.commonstr.members + '</td>\
        <TD align=right class=xtab>' + uW.g_js_strings.commonstr.might + '</td><TD class=xtab>' + uW.g_js_strings.getAllianceSearchResults.currdiplo + '</td><TD class=xtab>' + uW.g_js_strings.commonstr.members + '</td><TD class=xtab>' + uW.g_js_strings.commonstr.viewmap + '</td></tr>';
		for (k in rslt.alliancesMatched) {
			var all = rslt.alliancesMatched[k];
			var dip = '';
			if (all.relation && all.relation == 1)
				dip = uW.g_js_strings.commonstr.friendly;
			else if (all.relation && all.relation == 2)
				dip = uW.g_js_strings.commonstr.hostile;
			m += '<TR><TD class=xtab>' + all.allianceName + '</td><TD align=right class=xtab>' + all.ranking + '</td><TD align=right class=xtab>' + all.membersCount + '</td>\
       <TD align=right class=xtab>' + addCommasInt(all.might) + '</td><TD class=xtab>' + dip + '</td>\
       <TD class=xtab><a onclick="PTgetMembers(' + all.allianceId + ')">' + uW.g_js_strings.commonstr.members + '</a></td>\
        <TD class=xtab><a onclick="PTPaintMembers(' + all.allianceId + ')">' + uW.g_js_strings.commonstr.viewmap + '</a></td></tr>';
		}
		document.getElementById('allListOut').innerHTML = m;
	},
	showMyAlliance: function () {
		var t = Tabs.AllianceList;
		var myA = getMyAlliance();
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		if (myA[0] != 0) {
			t.eventGetMembers(myA[0], false);
		} else {
			document.getElementById('allListOut').innerHTML = uW.g_js_strings.membersInfo.youmustbelong;
		}
	},
	curPage: 0,
	MaxPage: 0,
	eventListNext: function (amt) {
		var t = Tabs.AllianceList;
		if (parseInt(amt) >= 9999)
			t.curPage = t.MaxPage;
		else {
			t.curPage = parseInt(t.curPage) + parseInt(amt);
			if (t.curPage > t.MaxPage) {
				t.curPage = t.MaxPage;
			}
		}
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		t.fetchOtherAllianceInfo(t.curPage, t.eventGotOtherAlliancePage);
	},
	eventListPrev: function (amt) {
		var t = Tabs.AllianceList;
		if (amt <= -1)
			t.curPage = 1;
		else {
			t.curPage -= amt;
			if (t.curPage < 1) {
				t.curPage = 1;
			}
		}
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		t.fetchOtherAllianceInfo(t.curPage, t.eventGotOtherAlliancePage);
	},
	eventGotOtherAlliancePage: function (rslt) {
		var t = Tabs.AllianceList;
		if (!rslt.ok) {
			document.getElementById('allListOut').innerHTML = rslt.errorMsg;
			return;
		}
		//	document.getElementById('idPageNum').value = t.curPage;
		t.MaxPage = rslt.noOfPages;
		//document.getElementById('idMaxPageNum').innerHTML = 'of ' + t.MaxPage;
		var m = '<div style="overflow:auto; height:556px;width:650px;"><TABLE><thead><TR style="font-weight:bold"> \
        <th class=xtab>' + uW.g_js_strings.modaltitles.alliance + '</th><th class=xtab>' + uW.g_js_strings.commonstr.rank + '</th><th class=xtab>' + uW.g_js_strings.commonstr.members + '</th>\
        <th align=right class=xtab>' + uW.g_js_strings.commonstr.might + '</th><th class=xtab>' + uW.g_js_strings.getAllianceSearchResults.currdiplo + '</th><th class=xtab>' + uW.g_js_strings.commonstr.members + '</th><th class=xtab>' + uW.g_js_strings.commonstr.viewmap + '</th></tr></thead><tbody>';
		document.getElementById('allListOut').innerHTML = m;
		for (var i = 0; i < rslt.otherAlliances.length; i++) {
			var alliance = rslt.otherAlliances[i];
			var dip = '';
			dip = getDiplomacy(alliance.allianceId);
			m += '<TR class="' + dip + '"><TD class=xtab>' + alliance.name + '</td><TD align=right class=xtab>' + alliance.ranking + '</td><TD align=right class=xtab>' + alliance.membersCount + '</td>\
       <TD align=right class=xtab>' + addCommasInt(alliance.might) + '</td><TD class=xtab>' + dip + '</td>\
       <TD class=xtab><a onclick="PTgetMembers(' + alliance.allianceId + ')">' + uW.g_js_strings.commonstr.members + '</a></td>\
	       <TD class=xtab><a onclick="PTPaintMembers(' + alliance.allianceId + ')">' + uW.g_js_strings.commonstr.viewmap + '</a></td></tr>';
		}
		m += '</tbody></TABLE><div style="font-weight:bold"; height:20px;width:560px; ><span> <a onclick="PTalClickPrev(-1)"> [|<] </a><a onclick="PTalClickPrev(10)"> [-10] </a><a onclick="PTalClickPrev(5)"> [-5] </a><a onclick="PTalClickPrev(1)"> [<] </a> \
          <a onclick="PTalClickNext(1)"> [>] </a><a onclick="PTalClickNext(5)"> [+5] </a><a onclick="PTalClickNext(10)"> [+10] </a><a onclick="PTalClickNext(9999)"> [>|] </a> </span></div>';
		m += '</div>';
		document.getElementById('allListOut').innerHTML = m;
	},
	showCurrentPage: function () {
		var t = Tabs.AllianceList;
		var myA = getMyAlliance();
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		if (myA[0] != 0) {
			t.fetchOtherAllianceInfo(t.curPage, t.eventGotOtherAlliancePage);
		} else {
			t.fetchOtherAllianceInfo(t.curPage, t.eventGotOtherAlliancePage);
		}
	},
	eventGotMemberList: function (rslt) {
		var t = Tabs.AllianceList;
		if (!rslt.ok) {
			document.getElementById('allListOut').innerHTML = rslt.errorMsg;
			return;
		}
		t.memberListRslt = rslt;
		var uList = [];
		for (k in rslt.results)
			uList.push(rslt.results[k].userId);
		t.fetchPlayerStatus(uList, function (r) {
			t.eventGotMemberOnlineList(r)
		});
	},
	eventGotMemberOnlineList: function (rslt) {
		var t = Tabs.AllianceList;
		var numInvalid = 0;
		var numPlayers = 0;
		var myA = getMyAlliance();
		var prestige = "";
		t.dat = [];
		for (var i = 0; i < t.memberListRslt.results.length; i++) {
			p = t.memberListRslt.results[i];
			if (p.userId == 0) {
				++numInvalid;
			} else {
				++numPlayers;
				if (myA[0] == p.allianceId)
					t.friendEta = true;
				else
					t.friendEta = false;
				for (var c = 0; c < p.cities.length; c++) {
					if (p.cities[c].prestigeType == 0) prestige = "";
					if (p.cities[c].prestigeType == 1) prestige = "Druid";
					if (p.cities[c].prestigeType == 2) prestige = "Fey";
					if (p.cities[c].prestigeType == 3) prestige = "Briton";
					if (p.cities[c].prestigeLevel == 0) {
						prestigelvl = "";
					} else {
						prestigelvl = " (" + p.cities[c].prestigeLevel + ")";
					}
					ExpTime = t.convertTime(new Date(p.cities[c].prestigeBuffExpire.replace(" ", "T")));
					if ((ExpTime + (3600 * 24) < unixTime()) || isNaN(ExpTime)) {
						prestigeexp = "";
					} else {
						prestigeexp = t.getDuration(p.cities[c].prestigeBuffExpire);
					}
					t.dat.push([p.displayName, parseInt(p.might), p.officerType, parseInt(p.numCities), parseInt(p.cities[c].tileLevel),
						parseInt(p.cities[c].xCoord), parseInt(p.cities[c].yCoord), p.cities[c].cityName, 0, rslt.data[p.userId] ? 1 : 0, '--', p.userId, prestige, p.userId, prestigelvl, prestigeexp, p.cities[c].prestigeBuffExpire, prestige + prestigelvl
					]);
				}
			}
		}
		t.setDistances(Cities.cities[0].x, Cities.cities[0].y);
		t.ModelCity = Cities.cities[0];
		t.setEta();
		t.displayMembers(t.memberListRslt.allianceName, numPlayers);
	},
	convertTime: function (datestr) {
		// KOC Timestamps are in Local Pacific Time, so need to convert to unixtime and add 8 hours for PST
		// Then adjust for Daylight Savings Time on both sides...
		return parseInt(datestr.getTime() / 1000) - (datestr.getTimezoneOffset() * 60) + (480 * 60) - getDST(datestr);
	},
	getDuration: function (datestr) {
		var t = Tabs.AllianceList;
		var Interval = t.convertTime(new Date(datestr.replace(" ", "T"))) - unixTime();
		if (Interval >= 0) {
			return uW.timestr(Interval);
		} else
			return '<span style="color:#f00;">Expired ' + uW.timestr(Interval * (-1)) + ' Ago</span>';
	},
	// sort and display
	reDisp: function () {
		var t = Tabs.AllianceList;
		//alert(t.dat.toSource());
		function sortFunc(a, b) {
			var t = Tabs.AllianceList;
			if (typeof (a[t.sortColNum]) == 'number') {
				if (t.sortDir > 0)
					return a[t.sortColNum] - b[t.sortColNum];
				else
					return b[t.sortColNum] - a[t.sortColNum];
			} else if (typeof (a[t.sortColNum]) == 'boolean') {
				// TODO !!        
				return 0;
			} else {
				if (t.sortDir > 0)
					return a[t.sortColNum].localeCompare(b[t.sortColNum]);
				else
					return b[t.sortColNum].localeCompare(a[t.sortColNum]);
			}
		}
		t.dat.sort(sortFunc);
		var m = '';
		var cityName = "";
		for (var i = 0; i < t.dat.length; i++) {
			cityName = t.dat[i][5].toString() + t.dat[i][6].toString();
			var status = '<img src=""/>';
			if (t.dat[i][9] == 1) status = '<img src=""/>';
			m += '<TR style="max-height:30px"><TD class=xxtab>' + status + '<SPAN onclick="PTPlayClick(this, \'' + t.dat[i][13] + '\',\'' + t.dat[i][9] + '\')"><A>' + t.dat[i][0] + '</a></span></td><TD align=right class=xxtab>' + addCommasInt(t.dat[i][1]);
			m += '</td><TD align=left class=xxtab nowrap>' + t.dat[i][12] + t.dat[i][14] + '</td><TD align=center class=xxtab nowrap>' + t.dat[i][15] + '</td><TD class=xxtab>' + officerId2String(t.dat[i][2]);
			m += '</td><TD class=xxtab><INPUT id=ScoutCheckbox_' + cityName + ' type=checkbox unchecked=true></td><TD class=xxtab>' + t.dat[i][7] + '</td><TD align=right class=xxtab>' + t.dat[i][4];
			m += '</td><TD align=center class=xxtab><DIV onclick="ptGotoMap(' + t.dat[i][5] + ',' + t.dat[i][6] + ')"><A>' + t.dat[i][5] + ',' + t.dat[i][6] + '</a></div></td>';
			m += '<TD align=right class=xxtab style="padding-right:20px;">' + t.dat[i][8].toFixed(2) + '</td>'
			m += '</td><TD  nowrap class=xxtab>' + (t.dat[i][10] ? '<SPAN>' + (t.dat[i][10] > 0 ? timestr(t.dat[i][10], 1) : '--') + '</span>' : '<SPAN>--</span>') + '<td class=xxtab><SPAN onclick="PCplo(this, \'' + t.dat[i][11] + '\')"><A>Login</a></span><td></tr>';
		}
		var tbody = document.getElementById('allBody');
		tbody.style.maxHeight = '';
		tbody.innerHTML = m;
		if (parseInt(tbody.clientHeight) > 470) {
			tbody.style.height = '470px';
			tbody.style.maxHeight = '470px';
		}
	},
	clickedPlayerInAll: function (span, uid, status) {
		var t = Tabs.AllianceList;
		t.clickedPlayerLeaderboard2(span, uid, status);
	},
	setDistances: function (x, y) {
		var t = Tabs.AllianceList;
		for (var i = 0; i < t.dat.length; i++) t.dat[i][8] = distance(x, y, t.dat[i][5], t.dat[i][6]);
	},
	friendEta: false,
	setEta: function () {
		var t = Tabs.AllianceList;
		for (var i = 0; i < t.dat.length; i++) {
			if (t.dat[i][8]) {
				var eta = t.estETA(parseFloat(t.dat[i][8]));
				if (t.friendEta)
					t.dat[i][10] = eta.friendETA;
				else
					t.dat[i][10] = eta.ETA;
			}
		}
	},
	handleEtaSelect: function () {
		var t = Tabs.AllianceList;
		t.setEta();
		t.reDisp();
	},
	sortColNum: 8,
	sortDir: 1,
	displayMembers: function (allName, numPlayers) {
		var t = Tabs.AllianceList;

		function alClickSort(e) {
			var t = Tabs.AllianceList;
			var newColNum = e.id.substr(8);
			document.getElementById('clickCol' + t.sortColNum).className = 'clickable';
			e.className = 'clickable clickableSel';
			if (newColNum == t.sortColNum)
				t.sortDir *= -1;
			else
				t.sortColNum = newColNum;
			t.reDisp();
		}
		uW.PTalClickSort = alClickSort;
		var m = '<STYLE>.clickable{background-color:#ddd; border:2px outset; border-color:#555; padding-left:5px; padding-right:5px}\
            .clickableSel{background-color:#ffffcc;}\
            .xxtab{background-color:none; padding-left:5px; padding-right:5px;} </style>\
      <DIV class=ptstat ><TABLE id=tabAllMembers cellpadding=0  width=100%><TR font-weight:bold"><TD class=xtab> &nbsp; ' + allName + '</td>\
        <TD class=xtab width=80% align=center>' + uW.g_js_strings.commonstr.distance + uW.g_js_strings.commonstr.from + ' <SPAN id=distFrom>' + Cities.cities[0].name + ' (' + Cities.cities[0].x + ',' + Cities.cities[0].y + ')</span></td><TD class=xtab align=right>' + numPlayers + uW.g_js_strings.commonstr.members + '&nbsp; </td></tr></table></div>\
       <div style="max-height:500px; height:500px; overflow-y:auto;"><TABLE id=tabAllMembers align=center cellpadding=0 cellspacing=0><THEAD style="overflow-y:auto;">\
      <TR style="font-weight:bold"><TD id=clickCol0 onclick="PTalClickSort(this)" class=clickable><A><DIV>' + uW.g_js_strings.commonstr.player + '</div></a></td>\
         <TD id=clickCol1 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>Might</a></div></td>\
        <TD id=clickCol17 onclick="PTalClickSort(this)" class=clickable><A><DIV>Faction</a></div></td>\
        <TD id=clickCol16 onclick="PTalClickSort(this)" class=clickable><A><DIV>Protection Left</a></div></td>\
        <TD id=clickCol2 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>Rank</a></div></td>\
        <TD id=clickCol9 class=clickable align=center><DIV><INPUT id=ToggleScoutCheckbox type=checkbox unchecked=true></div></td>\
        <TD id=clickCol7 onclick="PTalClickSort(this)" class=clickable><A><DIV>City Name</a></div></td>\
        <TD id=clickCol4 onclick="PTalClickSort(this)" class=clickable><A><DIV>Lvl</a></div></td>\
        <TD id=clickCol5 onclick="PTalClickSort(this)" class=clickable><A><DIV>Coords</a></div></td>\
        <TD id=clickCol8 onclick="PTalClickSort(this)" class=clickable><A><DIV>Dist.</a></div></td>\
        <TD id=clickCol10 onclick="PTalClickSort(this)" class=clickable><A><DIV>Eta</a></div></td>\
        <TD class=clickable><A><DIV>Login</a></div></td></tr></thead>\
      <TBODY id=allBody style="background-color:#ffffff;"></tbody></table></div>';
		document.getElementById('allListOut').innerHTML = m; //style="top:670px; left:0px; position:absolute;
		m = '<HR><TABLE width=100% cellpaddding=0><TR>';
		m += '<TD class=xtab>Show distance from: &nbsp; X: <INPUT size=2 type=text id=plyrX /> Y: <INPUT size=2 type=text id=plyrY /> &nbsp; Or, choose city: <span id=dmcoords></span></td></tr>';
		m += '<TR><TD class=xtab><DIV id=PaintScout></div></td></tr></table>';
		document.getElementById('altInput').innerHTML = m;
		document.getElementById('clickCol' + t.sortColNum).className = 'clickable clickableSel';
		document.getElementById('ToggleScoutCheckbox').addEventListener('change', t.doSelectall, false);
		t.reDisp();
		new CdispCityPicker('plyrdcp', document.getElementById('dmcoords'), true, t.eventCoords, 0).bindToXYboxes(document.getElementById('plyrX'), document.getElementById('plyrY'));
		document.getElementById('dmcoords').addEventListener('click', function () {
			//alert(t.eventCoords);
			//t.clickCity(CdispCityPicker);
		}, false);
		document.getElementById('idFindETASelect').disabled = false;
	},
	displayPlayer: function (allName, rslt) {
		var t = Tabs.AllianceList;
		var status = "";

		function alClickSort(e) {
			var t = Tabs.AllianceList;
			var newColNum = e.id.substr(8);
			document.getElementById('clickCol' + t.sortColNum).className = 'clickable';
			e.className = 'clickable clickableSel';
			//      alert(t.dat[0].toSource());
			if (newColNum == t.sortColNum)
				t.sortDir *= -1;
			else
				t.sortColNum = newColNum;
			t.reDisp();
		}
		uW.PTalClickSort = alClickSort;
		switch (parseInt(rslt.playerInfo.warStatus)) {
		case 1:
			status = uW.g_js_strings.commonstr.normal;
			break;
		case 2:
			status = uW.g_js_strings.MapObject.begprotect;
			break;
		case 3:
			status = uW.g_js_strings.commonstr.truce;
			break;
		case 4:
			status = uW.g_js_strings.commonstr.vacation;
			break;
		default:
			status = uW.g_js_strings.commonstr.normal
		}
		var m = '<STYLE>.clickable{background-color:#ddd; border:2px outset; border-color:#555; padding-left:5px; padding-right:5px}\
            .clickableSel{background-color:#ffffcc;}\
            .xxtab{background-color:none; padding-left:5px; padding-right:5px;} </style>\
             <DIV id=playerInfo></div><DIV id=TRStats></div>\
      <div style="max-height:470px; height:470px; overflow-y:auto;"><TABLE id=tabAllMembers align=center cellpadding=0 cellspacing=0><THEAD style="overflow-y:hidden;">\
      <TR style="font-weight:bold"><TD id=clickCol0 onclick="PTalClickSort(this)" class=clickable><A><DIV>Player</div></a></td>\
        <TD id=clickCol1 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>Might</a></div></td>\
        <TD id=clickCol17 onclick="PTalClickSort(this)" class=clickable><A><DIV>Faction</a></div></td>\
        <TD id=clickCol16 onclick="PTalClickSort(this)" class=clickable><A><DIV>Protection Left</a></div></td>\
        <TD id=clickCol2 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>Rank</a></div></td>\
        <TD id=clickCol9 class=clickable align=center><DIV><INPUT id=ToggleScoutCheckbox type=checkbox unchecked=true></div></td>\
        <TD id=clickCol7 onclick="PTalClickSort(this)" class=clickable><A><DIV>City Name</a></div></td>\
        <TD id=clickCol4 onclick="PTalClickSort(this)" class=clickable><A><DIV>Lvl</a></div></td>\
        <TD id=clickCol5 onclick="PTalClickSort(this)" class=clickable><A><DIV>Coords</a></div></td>\
        <TD id=clickCol8 onclick="PTalClickSort(this)" class=clickable><A><DIV>Distance</a></div></td>\
        <TD id=clickCol10 onclick="PTalClickSort(this)" class=clickable><A><DIV>Eta</a></div></td>\
		<TD class=clickable><A><DIV>Login</a></div></td></tr></thead>\
      <TBODY id=allBody style="background-color:#ffffff;"></tbody></table></div>\
      <DIV  width:100%; style="top:670px; left:0px; position:absolute; background-color:#ffffff; border-top:1px solid; margin-top:8px; color:#700; font-weight:bold;">';
		document.getElementById('allListOut').innerHTML = m; //style="top:670px; left:0px; position:absolute;
		m = '<HR><TABLE width=100% cellpaddding=0><TR align=left>';
		m += '<TD class=xtab>Show distance from: &nbsp; X: <INPUT size=2 type=text id=plyrX /> Y: <INPUT size=2 type=text id=plyrY /> &nbsp; Or, choose city: <span id=dmcoords></span></td></tr>';
		m += '<TR align=left><TD class=xtab><DIV id=PaintScout></div></td></tr></table>';
		document.getElementById('altInput').innerHTML = m;
		m = '<TABLE><TR><TD class=xtab style="width:75px">Alliance:</td><TD class=xtab style="width:150px"><a onclick="PTgetMembers(' + rslt.playerInfo.allianceId + ')">' + rslt.playerInfo.allianceName + '</a></td></tr>';
		m += '<TR><TD class=xtab>Last Login:</td><TD class=xtab>' + rslt.playerInfo.lastLogin + '</td></tr>';
		m += '<TR><TD class=xtab>Status:</td><TD class=xtab>' + status + '</td>';
		now = unixTime();
		if (rslt.playerInfo.warStatus > 1 && ((rslt.playerInfo.truceExpireUnixTime - now) > 0)) m += '<TD class=xtab>Expires: ' + rslt.playerInfo.truceExpireTimestamp + ' (' + timestr(rslt.playerInfo.truceExpireUnixTime - now) + ')</td></tr>';
		if (t.dat.length == 0) m += '<TR><TD class=xtab><B>MISTED?</b></td><TD><TD class=xtab>Expires: ' + rslt.playerInfo.fogExpireTimestamp + '</td></tr>';
		m += '<TR><TD class=xtab>Glory:</td><TD class=xtab><DIV id=PaintGlory></div></td></tr><TR><TD class=xtab>Max Glory:</td><TD class=xtab><DIV id=PaintMaxGlory></div></td></tr>';
		// create notes link
		uW.ptuser = {};
		uW.ptuser.id = rslt.playerInfo.userId;
		uW.ptuser.username = rslt.playerInfo.displayName;
		var notes = "";
		if (Tabs.Notes.noteValues[uW.ptuser.username]) {
			notes = Tabs.Notes.noteValues[uW.ptuser.username];
			notes = notes.text.replace(/<br\/>/g, "\n");
		}
		m += '<TR><TD class=xtab><a onclick="edit_notes(ptuser);">Player Notes:</a></td><TD id=ptplayernotes class=xtab>' + notes + '</td></tr>';
		if (uW.btLoaded)
			m += '</table><BR>Compare Throne Room : <INPUT id=CompareTR type=submit value="Compare"><INPUT id=CalcTR type=submit value="Calculate"><INPUT id=MonitorTR type=submit value="Monitor"><BR><BR>';
		else
			m += '</table><BR>Compare Throne Room : <INPUT id=CompareTR type=submit value="Compare"><INPUT id=CalcTR type=submit value="Calculate"><BR><BR>';
		document.getElementById('playerInfo').innerHTML = m;
		document.getElementById('ToggleScoutCheckbox').addEventListener('change', t.doSelectall, false);
		document.getElementById('CompareTR').addEventListener('click', function () {
			t.TRStats(rslt.playerInfo.userId, rslt.playerInfo.displayName, "Compare")
		}, false);
		document.getElementById('CalcTR').addEventListener('click', function () {
			t.TRStats(rslt.playerInfo.userId, rslt.playerInfo.displayName, "Calc")
		}, false);
		if (uW.btLoaded)
			document.getElementById('MonitorTR').addEventListener('click', function () {
				uW.btMonitorExternalCallUID(rslt.playerInfo.userId)
			}, false);
		document.getElementById('clickCol' + t.sortColNum).className = 'clickable clickableSel';
		t.PaintGlory(rslt.playerInfo.userId);
		t.reDisp();
		new CdispCityPicker('plyrdcp', document.getElementById('dmcoords'), true, t.eventCoords, 0).bindToXYboxes(document.getElementById('plyrX'), document.getElementById('plyrY'));
		document.getElementById('idFindETASelect').disabled = false;
	},
	PaintGlory: function (uid) {
		var t = Tabs.AllianceList;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.userId = uid;
		params.ctrl = 'PlayerProfile';
		params.action = 'get';
		new AjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (transport) {
				var rslt = eval("(" + transport.responseText + ")");
				if (rslt.ok) {
					document.getElementById('PaintGlory').innerHTML = addCommas(rslt.profile.glory);
					document.getElementById('PaintMaxGlory').innerHTML = addCommas(rslt.profile.maxGlory);
				} else t.PaintGlory(uid);
			},
			onFailure: function () {},
		});
	},
	HisStatEffects: [],
	MyStatEffects: [],
	TRStats: function (uid, name, what) {
		var t = Tabs.AllianceList;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.ctrl = 'throneRoom\\ThroneRoomServiceAjax';
		params.action = 'getEquipped';
		params.playerId = uid;
		new AjaxRequest(unsafeWindow.g_ajaxpath + "ajax/_dispatch53.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			loading: true,
			onSuccess: function (transport) {
				var rslt = eval("(" + transport.responseText + ")");
				if (rslt.ok) {
					for (k in uW.cm.thronestats.effects) t.HisStatEffects[k] = 0;
					for (kk in rslt.items){
						y = rslt.items[kk];
						if (y != undefined) {
							if (y["jewel"] && y["jewel"]["valid"] == true){
								y["effects"]["slot6"].fromJewel = true;
								y["effects"]["slot6"].quality = y["jewel"].quality;
							}
							for (var O in y["effects"]) {
								var i = +(O.split("slot")[1]);
								id = y["effects"]["slot" + i]["id"];
								tier = parseInt(y["effects"]["slot" + i]["tier"]);
								level = y["level"];
								p = unsafeWindow.cm.thronestats.tiers[id][tier];
								while (!p && (tier > 0)) {
									tier--;
									p = unsafeWindow.cm.thronestats.tiers[id][tier];
								}
								if (!p) continue; // can't find stats for tier
								if (y["effects"]["slot"+i].fromJewel && (level > unsafeWindow.cm.thronestats.jewelGrowthLimit[y["effects"]["slot"+i].quality])) {
									level = unsafeWindow.cm.thronestats.jewelGrowthLimit[y["effects"]["slot"+i].quality]
								}
								Current = p.base + ((level * level + level) * p.growth * 0.5);
								if (i <= parseInt(y["quality"])) t.HisStatEffects[id] += Current;
							}
						}
					}
					for (k in uW.cm.thronestats.effects) t.MyStatEffects[k] = 0;
					for (k in uW.kocThroneItems) {
						y = uW.kocThroneItems[k];
						for (var O in y["effects"]) {
							var i = +(O.split("slot")[1]);
							id = y["effects"]["slot" + i]["id"];
							tier = parseInt(y["effects"]["slot" + i]["tier"]);
							level = y["level"];
							p = unsafeWindow.cm.thronestats.tiers[id][tier];
							while (!p && (tier > 0)) {
								tier--;
								p = unsafeWindow.cm.thronestats.tiers[id][tier];
							}
							if (!p) continue; // can't find stats for tier
							if (y["effects"]["slot"+i].fromJewel && (level > unsafeWindow.cm.thronestats.jewelGrowthLimit[y["effects"]["slot"+i].quality])) {
								level = unsafeWindow.cm.thronestats.jewelGrowthLimit[y["effects"]["slot"+i].quality]
							}
							Current = p.base + ((level * level + level) * p.growth * 0.5);
							if (y.isEquipped && i <= y["quality"]) t.MyStatEffects[id] += Current
						}
					}
					if (what == "Compare") t.PaintTRCompare(name);
					if (what == "Calc") t.PaintTRCalc(name);
				} else t.TRStatsCompare();
			},
			onFailure: function () {
				return;
			},
		});
	},
	TRlineHolder: {
		1:{1:"Attack",2:null},2:{1:1,2:17},3:{1:24,2:29},4:{1:34,2:39},5:{1:44,2:50},6:{1:56,2:61},7:{1:17,2:1},8:{1:29,2:24},9:{1:39,2:34},10:{1:50,2:44},11:{1:61,2:56},
		12:{1:"Defense",2:null},13:{1:2,2:18},14:{1:25,2:30},15:{1:35,2:40},16:{1:45,2:51},17:{1:18,2:2},18:{1:30,2:25},19:{1:40,2:35},20:{1:51,2:45},
		21:{1:"Life",2:null},22:{1:3,2:19},23:{1:26,2:31},24:{1:36,2:41},25:{1:46,2:52},26:{1:19,2:3},27:{1:31,2:26},28:{1:41,2:36},29:{1:52,2:46},
		30:{1:"Combat Speed",2:null},31:{1:4,2:20},32:{1:27,2:32},33:{1:47,2:53},34:{1:57,2:62},35:{1:20,2:4},36:{1:32,2:27},37:{1:53,2:47},38:{1:62,2:57},
		39:{1:"Range",2:null},40:{1:5,2:21},41:{1:37,2:42},42:{1:58,2:63},43:{1:21,2:5},44:{1:42,2:37},45:{1:63,2:58},	
		46:{1:"Load",2:null},47:{1:6,2:22},48:{1:48,2:54},49:{1:59,2:64},50:{1:22,2:6},51:{1:54,2:48},52:{1:64,2:59},
		52:{1:"Accuracy",2:null},53:{1:7,2:23},54:{1:28,2:33},55:{1:38,2:43},56:{1:49,2:55},57:{1:60,2:65},58:{1:23,2:7},59:{1:33,2:28},60:{1:43,2:38},61:{1:55,2:49},62:{1:65,2:60},	
		63:{1:"Other",2:null},64:{1:8,2:8},65:{1:9,2:9},65:{1:10,2:10},66:{1:11,2:11},67:{1:12,2:12},68:{1:13,2:13},69:{1:14,2:14},70:{1:15,2:15},71:{1:16,2:16},72:{1:66,2:66},73:{1:67,2:67},74:{1:68,2:68},75:{1:69,2:69},76:{1:70,2:70},77:{1:71,2:71},78:{1:72,2:72},79:{1:73,2:73},80:{1:74,2:74},81:{1:75,2:75},82:{1:76,2:76},83:{1:77,2:77},84:{1:78,2:78},85:{1:79,2:79},86:{1:80,2:80},87:{1:81,2:81},88:{1:82,2:82},89:{1:83,2:83},90:{1:84,2:84},91:{1:85,2:85},92:{1:86,2:86},93:{1:87,2:87},94:{1:88,2:88},95:{1:89,2:89},96:{1:90,2:90},97:{1:91,2:91},98:{1:92,2:92},99:{1:93,2:93},100:{1:94,2:94},101:{1:95,2:95},102:{1:96,2:96},103:{1:97,2:97},104:{1:98,2:98},105:{1:99,2:99},106:{1:100,2:100},107:{1:101,2:101},108:{1:102,2:102},109:{1:103,2:103},110:{1:104,2:104},111:{1:105,2:105},112:{1:106,2:106},113:{1:107,2:107},114:{1:108,2:108},115:{1:109,2:109},116:{1:110,2:10},117:{1:111,2:111},118:{1:112,2:112},
	},

	PaintTRCalc: function (name) {
		var t = Tabs.AllianceList;
		m = '<BR><BR><DIV style="max-height:690px; height:690px; overflow-y:scroll;"><TABLE><TD width="35px" class=xtab></td><TD class=xtab><B>' + name + '</b><TD  width="50px"></td><TD class=xtab><B>' + Seed.player.name + '</b></td>';
		for (z = 1; z <= 118; z++) {
			var HisContent = "";
			var MyContent = "";
			var His = t.TRlineHolder[z][1];
			var My = t.TRlineHolder[z][2];
			var diff = 0;
			var color = "black";
			if (t.TRlineHolder[z][2] == null) {
				m += '<TR><TD>&nbsp</td></tr><TR><TD class=xtab></td><TD class=xtab><B><U>' + t.TRlineHolder[z][1] + '</b></u><TD  width="50px" class=xtab></td><TD class=xtab></td></tr>';
			} else {
				if (t.HisStatEffects[His] != 0) HisContent = t.HisStatEffects[His] + '% ' + uW.cm.thronestats["effects"][His]["1"];
				if (t.MyStatEffects[My] != 0) MyContent = t.MyStatEffects[My] + '% ' + uW.cm.thronestats["effects"][My]["1"];
				if (t.HisStatEffects[His] != 0 && t.MyStatEffects[My] != 0) {
					if (z < 63) diff = (parseInt(t.HisStatEffects[His]) + parseInt(t.MyStatEffects[My]));
					if (z > 63) diff = (parseInt(t.MyStatEffects[My]) - parseInt(t.HisStatEffects[His]));
					if (MyContent.indexOf("Debuff") != -1 && diff > 0) color = "red";
					else if (MyContent.indexOf("Debuff") != -1 && diff < 0) color = "green";
					else if (HisContent.indexOf("Debuff") != -1 && diff > 0) color = "green";
					else if (HisContent.indexOf("Debuff") != -1 && diff < 0) color = "red";
					else if (diff < 0) color = "red";
					else color = "green";
					m += '<TR><TD class=xtab><FONT color=' + color + '><I><B>' + diff + '</b></i></font></td><TD class=xtab>' + HisContent + '</td><TD class=xtab></td><TD class=xtab>' + MyContent + '</td>';
				} else if (t.HisStatEffects[His] != 0 || t.MyStatEffects[His] != 0) m += '<TR><TD class=xtab></td><TD class=xtab>' + HisContent + '</td><TD class=xtab></td><TD class=xtab>' + MyContent + '</td>';
				m += '</tr>';
			}
		}
		m += '</table></div>';
		var popMsg = null;
		t.popMsg = new CPopup('pbMailBody', 0, 0, 550, 750, true, function () {
			clearTimeout(1000);
		});
		t.popMsg.centerMe(mainPop.getMainDiv());
		t.popMsg.getMainDiv().innerHTML = m;
		t.popMsg.getTopDiv().innerHTML = '<DIV align=center><B>Throne Room Compare</B></DIV>';
		t.popMsg.show(true);
	},
	PaintTRCompare: function (name) {
		var t = Tabs.AllianceList;
		m = '<BR><BR><TABLE><TD class=xtab></td><TD class=xtab><B>' + name + '</b><TD></td><TD class=xtab><B>' + Seed.player.name + '</b></td></tr><TR><TD>&nbsp</td></tr>';
		for (k = 1; k < t.MyStatEffects.length; k++) {
			var HisContent = "";
			var MyContent = "";
			if (t.HisStatEffects[k] != 0) HisContent = t.HisStatEffects[k] + '% ' + uW.cm.thronestats["effects"][k]["1"];
			if (t.MyStatEffects[k] != 0) MyContent = t.MyStatEffects[k] + '% ' + uW.cm.thronestats["effects"][k]["1"];
			if (t.HisStatEffects[k] != 0 || t.MyStatEffects[k] != 0) m += '<TR><TD  width="25px" class=xtab></td><TD class=xtab>' + HisContent + '</td><TD  width="50px" class=xtab></td><TD class=xtab>' + MyContent + '</td></tr>';
		}
		m += '</table>';
		var popMsg = null;
		t.popMsg = new CPopup('pbMailBody', 0, 0, 550, 750, true, function () {
			clearTimeout(1000);
		});
		t.popMsg.centerMe(mainPop.getMainDiv());
		t.popMsg.getMainDiv().innerHTML = m;
		t.popMsg.getTopDiv().innerHTML = '<DIV align=center><B>Throne Room Compare</B></DIV>';
		t.popMsg.show(true);
	},
	rallypointlevel: 0,
	MaxScouts: function (city) {
		var t = Tabs.AllianceList;
		var othertroops = 0;
		var max = 0;
		var maxsend = 0;
		t.getRallypoint("city" + city.id);
		RallypointMax = (t.rallypointlevel * 10000);
		maxsend = RallypointMax + ((RallypointMax / 100) * uW.cm.ThroneController.effectBonus(66));
		for (i = 1; i <= 12; i++) othertroops += parseInt(document.getElementById('Unt' + 3).value);
		if (othertroops < maxsend) max = (maxsend - othertroops);
		if (max > Seed.units["city" + city.id]["unt" + 3]) max = Seed.units["city" + city.id]["unt" + 3];
		document.getElementById('numScouts').value = max;
	},
	getRallypoint: function (cityId) {
		var t = Tabs.AllianceList;
		for (var o in Seed.buildings[cityId]) {
			var buildingType = parseInt(Seed.buildings[cityId][o][0]);
			var buildingLevel = parseInt(Seed.buildings[cityId][o][1]);
			if (buildingType == 12) t.rallypointlevel = parseInt(buildingLevel);
		}
		if (t.rallypointlevel == 11) t.rallypointlevel = 15;
		if (t.rallypointlevel == 12) t.rallypointlevel = 20;
	},
	doSelectall: function () {
		var t = Tabs.AllianceList;
		var city = "";
		for (var k = 0; k < t.dat.length; k++) {
			city = t.dat[k][5].toString() + t.dat[k][6].toString();
			if (document.getElementById('ToggleScoutCheckbox').checked) document.getElementById('ScoutCheckbox_' + city).checked = true;
			else document.getElementById('ScoutCheckbox_' + city).checked = false;
		}
	},
	doAddScout: function () {
		var t = Tabs.AllianceList;
		var count = -1;
		var city = "";
		document.getElementById('ptscoutprogress').className = "";
		document.getElementById('ptscoutprogress').innerHTML = "";
		for (var k = 0; k < t.dat.length; k++) {
			if (t.dat[k][5] != undefined && t.dat[k][6] != undefined) {
				var x = t.dat[k][5];
				var y = t.dat[k][6];
				count++;
				city = t.dat[k][5].toString() + t.dat[k][6].toString();
				var box = 'ScoutCheckbox_' + city;
				if (document.getElementById(box).checked) setTimeout(t.doScout, 5000 * count, x, y, box);
			}
		}
	},
	doScout: function (x, y, box) {
		var t = Tabs.AllianceList;
		openslots = document.getElementById('openSlots').value;
		slots = CheckCityMarches(t.ScoutInfo.id);
		rallypointlevel = getRallypoint(t.ScoutInfo.id);
		slotsend = rallypointlevel - slots - openslots;
		if (slotsend <= 0) {
			setTimeout(t.doScout, 30000, x, y, box); // try again in 30 secs..
			document.getElementById('ptscoutprogress').innerHTML = "Waiting for free rally point slots...";
			return;
		}
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.cid = t.ScoutInfo.id;
		params.type = 3
		params.kid = 0
		params.xcoord = x;
		params.ycoord = y;
		params.u3 = document.getElementById('numScouts').value;
		params.gold = 0;
		params.r1 = 0;
		params.r2 = 0;
		params.r3 = 0;
		params.r4 = 0;
		params.r5 = 0;
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/march.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			loading: true,
			onSuccess: function (rslt) {
				var t = Tabs.AllianceList;
				logit(rslt.toSource());
				if (rslt.ok) {
					var timediff = parseInt(rslt.eta) - parseInt(rslt.initTS);
					var rtimediff = parseInt(rslt.returnTS) - parseInt(rslt.initTS);
					var ut = unsafeWindow.unixtime();
					var unitsarr = {};
					for (var ui in unsafeWindow.cm.UNIT_TYPES) {
						i = unsafeWindow.cm.UNIT_TYPES[ui];
						if (params["u" + i])
							unitsarr[i] = params["u" + i];
						else
							unitsarr[i] = 0;
					}
					var resources = [0, 0, 0, 0, 0, 0];
					var currentcityid = params.cid;
					unsafeWindow.attach_addoutgoingmarch(rslt.marchId, rslt.marchUnixTime, ut + timediff, params.xcoord, params.ycoord, unitsarr, params.type, params.kid, resources, rslt.tileId, rslt.tileType, rslt.tileLevel, currentcityid, true, ut + rtimediff);
					unsafeWindow.update_seed(rslt.updateSeed)
					if (rslt.updateSeed) {
						unsafeWindow.update_seed(rslt.updateSeed)
					};
					document.getElementById(box).checked = false;
					document.getElementById('ptscoutprogress').innerHTML = "Scouting (" + params.xcoord + "," + params.ycoord + ") ...";
				}
			},
			onFailure: function () {},
		});
	},
	eventCoords: function (city, x, y) {
		var t = Tabs.AllianceList;
		t.ScoutInfo = new Array;
		t.ScoutInfo = city;
		if (t.ScoutInfo != null) {
			var scoutexport = "";
			if (uW.ShowScoutList) {
				scoutexport = '&nbsp;<INPUT id=ptscoutexport type=submit value="Export to BOT">'
			}
			document.getElementById('PaintScout').innerHTML = 'Scout selected cities from: ' + t.ScoutInfo.name + ' with <INPUT id=numScouts type=text maxlength=7 size=7 value="1"><INPUT id=MaxScout type=submit value=Max> Scout(s); Rally point slots to keep open: <INPUT id=openSlots type=text maxlength=3 size=3 value="0"> <INPUT id=scoutAllSelected type=submit value=GO>' + scoutexport + '</div><div align=center id=ptscoutprogress class=ptdivHide></div>';
			document.getElementById('scoutAllSelected').addEventListener('click', function () {
				t.doAddScout();
			}, false);
			document.getElementById('MaxScout').addEventListener('click', function () {
				t.MaxScouts(city);
			}, false);
			if (uW.ShowScoutList) {
				document.getElementById('ptscoutexport').addEventListener('click', function () {
					t.generateScoutList();
				}, false);
			}
		}
		var m = '';
		if (city != null)
			m = city.name + ' (' + city.x + ',' + city.y + ')';
		else
			m = x + ',' + y;
		var distFrom = document.getElementById('distFrom');
		if (distFrom)
			distFrom.innerHTML = m;
		t.ModelCity = city;
		if (city != null) t.JumpCity(city.name);
		t.setDistances(x, y);
		t.setEta();
		t.reDisp();
	},
	generateScoutList: function () {
		var t = Tabs.AllianceList;
		var bulkScout = [];
		for (var k = 0; k < t.dat.length; k++) {
			if (t.dat[k][5] != undefined && t.dat[k][6] != undefined) {
				if (document.getElementById('ScoutCheckbox_' + t.dat[k][5].toString() + t.dat[k][6].toString()).checked) bulkScout.push({
					x: t.dat[k][5],
					y: t.dat[k][6],
					dist: t.dat[k][8].toFixed(2),
					chk: true
				});
				else bulkScout.push({
					x: t.dat[k][5],
					y: t.dat[k][6],
					dist: t.dat[k][8].toFixed(2),
					chk: false
				});
			}
		}
		uW.ShowScoutList(bulkScout, t.ScoutInfo);
	},
	eventGetMembers: function (aid) {
		var t = Tabs.AllianceList;
		document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>' + uW.g_js_strings.commonstr.loadingddd + '</center>';
		t.fetchAllianceMemberList(aid, null, t.eventGotMemberList);
	},
	fetchAllianceMemberList: function (allianceId, allianceName, notify) {
		var t = Tabs.AllianceList;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.type = "might";
		params.page = 1;
		params.perPage = 100;
		if (allianceName)
			params.allianceName = allianceName;
		if (allianceId && allianceId != 0)
			params.allianceId = allianceId;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserLeaderboard.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	GetDataForMap: function (allianceId) {
		var t = Tabs.AllianceList;
		var params = uW.Object.clone(uW.g_ajaxparams);
		var Data = [];
		params.perPage = 100;
		params.allianceId = allianceId;
		params.type = "might";
		params.page = 1;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserLeaderboard.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				var city = '';
				for (var i = 0; i < rslt.results.length; i++) {
					//alert(rslt.results[i].toSource());
					if (rslt.results[i]['userId'] != 0) {
						player = rslt.results[i]['cities'];
						for (var ii = 0; ii < player.length; ii++)
							Data.push({
								X: player[ii]['xCoord'],
								Y: player[ii]['yCoord']
							});
					}
				}
				if (Data != []) t.PaintDataOnMap(Data);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	PaintDataOnMap: function (Data) {
		var provMapCoordsA = {
			imgWidth: 710,
			imgHeight: 708,
			mapWidth: 670,
			mapHeight: 670,
			leftMargin: 31,
			topMargin: 19
		};
		var map = '<DIV id=ptAlliProvMap style="height:' + provMapCoordsA.imgHeight + 'px; width:' + provMapCoordsA.imgWidth + 'px; background-repeat:no-repeat; background-image:url(\'' + URL_PROVINCE_MAP + '\')"></div>';
		//alert(Data.toSource());
		//Data = [{X:"700", Y:"700"}, {X:"600", Y:"600"}, {X:"500", Y:"500"},{X:"400", Y:"400"},{X:"300", Y:"300"},{X:"200", Y:"200"},{X:"100", Y:"100"},{X:"0", Y:"0"},{X:"750", Y:"750"}, {X:"650", Y:"650"}, {X:"550", Y:"550"},{X:"450", Y:"450"},{X:"350", Y:"350"},{X:"250", Y:"250"},{X:"150", Y:"150"},{X:"50", Y:"50"}];
		document.getElementById('allListOut').innerHTML = map;
		var eMap = document.getElementById('ptAlliProvMap');
		for (var cc = 0; cc < Seed.cities.length; cc++) {
			var city = Seed.cities;
			var Xplot = parseInt((provMapCoordsA.mapWidth * parseInt(city[cc][2])) / 750);
			var Yplot = parseInt((provMapCoordsA.mapHeight * parseInt(city[cc][3])) / 750);
			var cf = document.createElement('div');
			cf.style.background = 'black';
			cf.style.opacity = '1.0';
			cf.style.position = 'relative';
			cf.style.display = 'block';
			cf.style.width = '14px';
			cf.style.height = '16px';
			cf.style.border = '1px solid #fff';
			cf.style.color = 'white';
			cf.style.textAlign = 'center';
			cf.style.top = (Yplot + provMapCoordsA.topMargin - (cc * 16) - 8) + 'px';
			cf.style.left = (Xplot + provMapCoordsA.leftMargin - 7) + 'px';
			cf.innerHTML = (cc + 1) + '';
			eMap.appendChild(cf);
		}
		for (var i = 0; i < Data.length; i++) {
			var x = parseInt(Data[i]['X']);
			var y = parseInt(Data[i]['Y']);
			var xplot = parseInt((provMapCoordsA.mapWidth * x) / 750);
			var yplot = parseInt((provMapCoordsA.mapHeight * y) / 750);
			var ce = document.createElement('div');
			ce.style.background = 'red';
			ce.style.opacity = '1.0';
			ce.style.position = 'relative';
			ce.style.display = 'block';
			ce.style.width = '4px';
			ce.style.height = '4px';
			ce.style.color = 'white';
			ce.style.textAlign = 'center';
			ce.style.top = (yplot + provMapCoordsA.topMargin - (4 * i) - ((Seed.cities.length) * 18)) + 'px';
			ce.style.left = (xplot + provMapCoordsA.leftMargin - 2) + 'px';
			//ce.innerHTML = '<span onmouseover="this.innerText='+x+','+y+'" onclick="">A</span>';
			ce.innerHTML = '<DIV onclick="ptGotoMap(' + x + ',' + y + ')">&nbsp;</div>';
			eMap.appendChild(ce);
		}
	},
	fetchLeaderboard: function (uid, notify) {
		var t = Tabs.AllianceList;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.userId = uid;
		params.type = "might";
		params.page = 1;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserLeaderboard.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	fetchAllianceList: function (allianceName, myAid, notify) { // at least 3 chars :)
		var t = Tabs.AllianceList;

		function combineResults(rsltA, rsltM, notify) {
			if (!rsltA.ok) {
				if (rsltA.msg.indexOf("No alliance found under") != 0 || !rsltM.ok) {
					notify(rsltA);
					return;
				}
				rsltA.ok = true;
				rsltA.count = 0;
				rsltA.alliancesMatched = {};
			}
			if (rsltM.ok) {
				rsltA.alliancesMatched['a' + rsltM.allianceInfo.allianceId] = {
					allianceId: rsltM.allianceInfo.allianceId,
					allianceName: rsltM.allianceInfo.allianceName,
					membersCount: rsltM.allianceInfo.members,
					relation: null,
					might: rsltM.allianceInfo.might,
					ranking: rsltM.allianceInfo.ranking
				};
				++rsltA.count;
			}
			notify(rsltA);
		}
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.allianceName = allianceName.replace(/\ /g,"_");
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/allianceGetSearchResults.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (myAid != null && myAid > 0)
					t.fetchMyAllianceInfo(function (r) {
						combineResults(rslt, r, notify)
					});
				else
					notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	fetchOtherAllianceInfo: function (pageNum, notify) { // as in alliance list, sorted by rank, 10 per page
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.pageNo = pageNum;
		params.cityId = uW.currentcityid;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/allianceGetOtherInfo.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	fetchMyAllianceInfo: function (notify) {
		var params = uW.Object.clone(uW.g_ajaxparams);
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/allianceGetInfo.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	fetchPlayerList: function (name, notify) { // at least 3 chars!! 
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.searchName = name;
		params.subType = "ALLIANCE_INVITE";
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/searchPlayers.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	fetchPlayerInfo: function (uid, notify) {
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.uid = uid;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/getUserGeneralInfo.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	/***
ajax/getOnline.php:
  (string) ok = true
  (object) data = [object Object]
    (boolean) 4394121 = false
  (undefined) errorMsg: null = null
***/
	fetchPlayerStatus: function (uidArray, notify) {
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.checkArr = uidArray.join(',');
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/getOnline.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	fetchPlayerLastLogin: function (uid, notify) {
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.pid = uid;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/viewCourt.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				new Sendcourtdata(rslt);
				notify(rslt);
			},
			onFailure: function (rslt) {
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	gotPlayerLastLogin: function (rslt, span) {
		var t = Tabs.AllianceList;
		if (!rslt.ok) {
			span.innerHTML = rslt.errorMsg;
			return;
		}
		var p = rslt.playerInfo;
		var lastLogin = rslt.playerInfo.lastLogin;
		if (lastLogin) {
			m = '<span style="color:black">' + uW.g_js_strings.modal_messages_viewreports_view.lastlogin + ': ' + lastLogin + '</span>';
		} else {
			m = '<span style="color:red">No login date found: ' + lastLogin + '</span>';
		}
		span.innerHTML = m + '';
	},
	ModelCity: {},
	estETA: function (dist) { // Need Relief Station Levels to estimate transport, reinf, or reassign times. 
		var t = Tabs.AllianceList;
		var ret = {
			ETA: 0,
			etaStr: 'NA',
			friendETA: 0,
			friendEtaStr: 'NA'
		};
		var cityID;
		if (dist <= 0) return ret;
		var EtaType = document.getElementById('idFindETASelect');
		var baseSpeedSel = EtaType.options[EtaType.selectedIndex].value;
		var m = baseSpeedSel.split(',');
		var horse = 0;
		var baseSpeed = 0;
		if (m) {
			horse = parseInt(m[0]);
			baseSpeed = parseInt(m[1]);
		}
		if (baseSpeed == 0) return ret;
		var mmLvl = parseInt(Seed.tech.tch11); //Magical Mapping
		var Speed = 0;
		if (horse) {
			//HorsesSiegeSpeed = Base * (1 + MM/10) * (1 + AH/20) 
			var hsLvl = parseInt(Seed.tech.tch12); //Alloy Horse Shoes
			Speed = baseSpeed * (1 + mmLvl / 10.0) * (1 + hsLvl / 20.0);
		} else {
			//FootSpeed = Base * (1 + MM/10)
			Speed = baseSpeed * (1 + mmLvl / 10.0);
		}
		//Grid Speed (tiles/second) = Speed (100ths/min) / 6000 
		var gSpeed = 0;
		var estSec;
		if (Speed > 0) {
			gSpeed = Speed / 6000.0; //0.48333 mm=10, hs=9
			estSec = (parseFloat(dist) / gSpeed).toFixed(0);
		}
		ret.ETA = (parseInt((estSec + '')) + 30);
		ret.etaStr = timestr(ret.ETA, 1);
		//ret.etaStr = ret.ETA + ', ' + timestr (ret.ETA,1);
		//RS - Cities Relief Station Level
		//Friendly Speed = Speed * (1 + RS/2)
		if (t.ModelCity) {
			cityID = t.ModelCity.id;
			var building = getCityBuilding(cityID, 18);
			if (building) {
				fSpeed = Speed * (1 + parseInt(building.maxLevel) / 2);
				gSpeed = fSpeed / 6000;
				estSec = (dist / gSpeed).toFixed(0);
				ret.friendETA = parseInt((estSec + '')) + 30;
				ret.friendEtaStr = timestr((ret.friendETA + ''), 1);
			}
		}
		return ret;
	},
	JumpCity: function (city) {
		var t = Tabs.AllianceList;
		for (i = 0; i < Seed.cities.length; i++) {
			if (Seed.cities[i][1] == city) var cityNum = i;
		}
		cityNum++;
		var obj = document.getElementById('citysel_' + cityNum);
		return t.ClickWin(window, obj, 'click');
	},
	ClickWin: function (win, obj, evtName) {
		var evt = win.document.createEvent("MouseEvents");
		evt.initMouseEvent(evtName, true, true, win,
			0, 0, 0, 0, 0, false, false, false, false, 0, null);
		return !obj.dispatchEvent(evt);
	},
};
/*********************************** Test TAB ***********************************/
Tabs.Test = {
	tabOrder: 100,
	tabDisabled: !ENABLE_TEST_TAB,
	cont: null,
	init: function (div) {
		var t = Tabs.Test;
		t.cont = div;
		var citySelect = '   <SELECT id=fakeCity>';
		for (var c = 0; c < Cities.numCities; c++) {
			aCity = Cities.cities[c].name + ' (' + Cities.cities[c].x + ',' + Cities.cities[c].y + ')';
			citySelect += '<option value=\'' + c + '\'>' + aCity + '</option>';
		}
		citySelect += '</select>';
		var m = '<TABLE><TR><TD align=right>Scout: </td><TD><INPUT type=checkbox id=fakeIsScout></td></tr>\
        <TR><TD align=right>Wild: </td><TD><INPUT type=checkbox id=fakeIsWild></td></tr>\
        <TR><TD align=right>False Report: </td><TD><INPUT type=checkbox disabled id=fakeFalse></td></tr>\
        <TR><TD align=right>Seconds: </td><TD><INPUT type=text size=4 value=300 id=fakeSeconds></td></tr>\
        <TR><TD align=right># of Supply: </td><TD><INPUT type=text size=6 value=0 id=faketroop0></td></tr>\
		<TR><TD align=right># of Militia: </td><TD><INPUT type=text size=9 value=0 id=faketroop1></td></tr>\
		<TR><TD align=right># of Scouts: </td><TD><INPUT type=text size=9 value=0 id=faketroop2></td></tr>\
		  <TR><TD align=right># of Pikes: </td><TD><INPUT type=text size=9 value=0 id=faketroop3></td></tr>\
		  <TR><TD align=right># of Swords: </td><TD><INPUT type=text size=9 value=0 id=faketroop4></td></tr>\
		  <TR><TD align=right># of Archers: </td><TD><INPUT type=text size=9 value=0 id=faketroop5></td></tr>\
		  <TR><TD align=right># of Calvary: </td><TD><INPUT type=text size=9 value=0 id=faketroop6></td></tr>\
		  <TR><TD align=right># of Heavy Cav: </td><TD><INPUT type=text size=9 value=0 id=faketroop7></td></tr>\
		  <TR><TD align=right># of Wagons: </td><TD><INPUT type=text size=9 value=0 id=faketroop8></td></tr>\
		  <TR><TD align=right># of Ballistas: </td><TD><INPUT type=text size=9 value=0 id=faketroop9></td></tr>\
		  <TR><TD align=right># of Battering Ram: </td><TD><INPUT type=text size=9 value=0 id=faketroop10></td></tr>\
		  <TR><TD align=right># of Catapults: </td><TD><INPUT type=text size=9 value=0 id=faketroop11></td></tr>\
		  <TR><TD align=right># of Bloodthorns: </td><TD><INPUT type=text size=9 value=0 id=faketroop12></td></tr>\
		  <TR><TD align=right># of Executioners: </td><TD><INPUT type=text size=9 value=0 id=faketroop13></td></tr>\
		  <TR><TD align=right># of Siege Walls: </td><TD><INPUT type=text size=9 value=0 id=faketroop14></td></tr>\
		  <TR><TD align=right># of Flame Archers: </td><TD><INPUT type=text size=9 value=0 id=faketroop15></td></tr>\
		  <TR><TD align=right># of Hussars: </td><TD><INPUT type=text size=9 value=0 id=faketroop16></td></tr>\
		  <TR><TD align=right># of Halberdiers: </td><TD><INPUT type=text size=9 value=0 id=faketroop17></td></tr>\
		  <TR><TD align=right># of Onagers: </td><TD><INPUT type=text size=9 value=0 id=faketroop18></td></tr>\
		  <TR><TD align=right># of Saboteurs: </td><TD><INPUT type=text size=9 value=0 id=faketroop19></td></tr>\
		  <TR><TD align=right>Fake name to use: </td><TD><INPUT type=text size=15 value=oftheNOOBS id=fakeName></td></tr>\
		  <TR><TD align=right>Target city: </td><TD>' + citySelect + '</td></tr>\
        <TR><TD colspan=2 align=center><INPUT id=testSendMarch type=submit value="Fake Attack" \></td></tr></table>\
        <INPUT id=ptReloadKOC type=submit value="Reload KOC" \>\
        <BR><DIV id=testDiv style="background-color:#fffff0; maxwidth:675; max-height:430px; height:430px; overflow-y:auto;"></div>';
		t.cont.innerHTML = m;
		document.getElementById('testSendMarch').addEventListener('click', t.clickFakeAttack, false);
		document.getElementById('ptReloadKOC').addEventListener('click', t.reloadKOC, false);

		function xyNotify(city, x, y) {
			var m = '[ Notified: ' + (city ? city.name : 'null') + ', x=' + x + ', y=' + y + ' ]';
			document.getElementById('testNotify').innerHTML = m;
		}
	},
	hide: function () {},
	show: function () {},
	reloadKOC: function () {
		var goto = 'https://apps.facebook.com/kingdomsofcamelot/?s=' + GetServerId();
		var t = '<FORM target="_top" action="' + goto + '" method=post><INPUT id=xxptButReload type=submit value=RELOAD><INPUT type=hidden name=s value="' + GetServerId() + '"</form>';
		var e = document.createElement('div');
		e.innerHTML = t;
		document.body.appendChild(e);
		setTimeout(function () {
			document.getElementById('xxptButReload').click();
		}, 0);
	},
	writeDiv: function (msg) {
		var t = Tabs.Test;
		if (t.state != null)
			document.getElementById('testDiv').innerHTML = msg;
	},
	addDiv: function (msg) {
		var t = Tabs.Test;
		if (t.state != null)
			document.getElementById('testDiv').innerHTML += msg;
	},
	createFakeAttack: function (cityNum, isScout, isWild, isFalse, secs, troops, name) {
		var marchId = 'm' + (88888 + Math.floor(Math.random() * 11111));
		var march = {};
		if (matTypeof(Seed.queue_atkinc) == 'array')
			Seed.queue_atkinc = {};
		if (isFalse)
			march.marchType = 0;
		else if (isScout)
			march.marchType = 3;
		else
			march.marchType = 4;
		march.toCityId = Cities.cities[cityNum].id;
		if (isWild) {
			keys = uW.Object.keys(Seed.wilderness['city' + Cities.cities[cityNum].id]);
			march.toTileId = Seed.wilderness['city' + Cities.cities[cityNum].id][keys[0]].tileId;
		} else {
			march.toTileId = Cities.cities[cityNum].tileId;
		}
		secs = parseInt(secs);
		march.arrivalTime = unixTime() + secs;
		march.departureTime = unixTime() - 10;
		march.unts = {}
		var unitsarr = [];
		for (j in unsafeWindow.unitcost)
			unitsarr.push(0);
		for (i = 0; i < unitsarr.length; i++) {
			if (troops[i] > 0)
				if (i < 18) march.unts["u" + (i + 1)] = addCommas(troops[i]);
				else march.unts["u" + (i + 3)] = addCommas(troops[i]);
		}
		march.pid = 1234567;
		march.score = 9;
		march.mid = marchId.substr(1);
		march.players = {}
		march.players.u1234567 = {}
		march.players.u1234567.n = name;
		march.players.u1234567.t = 60;
		march.players.u1234567.m = 5441192;
		march.players.u1234567.s = 'M';
		march.players.u1234567.w = 1;
		march.players.u1234567.a = 1;
		march.players.u1234567.i = 5;
		Seed.queue_atkinc[marchId] = march;
		Seed.players.u1234567 = march.players.u1234567;
	},
	clickFakeAttack: function () {
		var t = Tabs.Test;
		var isScout = document.getElementById('fakeIsScout').checked;
		var isWild = document.getElementById('fakeIsWild').checked;
		var isFalse = document.getElementById('fakeFalse').checked;
		var troops = [];
		var unitsarr = [];
		for (j in unsafeWindow.unitcost)
			unitsarr.push(0);
		for (i = 0; i < unitsarr.length; i++)
			troops[i] = parseInt(document.getElementById('faketroop' + i).value);
		var secs = parseInt(document.getElementById('fakeSeconds').value);
		var name = document.getElementById('fakeName').value;
		var city = document.getElementById('fakeCity').value;
		t.createFakeAttack(city, isScout, isWild, isFalse, secs, troops, name);
	},
}
/*********************************** Info tab ***********************************/
Tabs.Info = {
	tabOrder: 20,
	tabLabel: document.getElementById('mod_views_map').innerHTML,
	cont: null,
	init: function (div) {
		var t = Tabs.Info;
		t.cont = div;
		fortmight = {
			u53: "4",
			u55: "7",
			u60: "1",
			u61: "2",
			u62: "3",
		};
		var t = Tabs.Info;
		var m = '<DIV style="max-height:735px; height:735px;"><DIV class=ptstat>PROVINCE MAP</div><DIV id=ptProvMap style="height:' + provMapCoords.imgHeight + 'px; width:' + provMapCoords.imgWidth + 'px; background-repeat:no-repeat; background-image:url(\'' + URL_PROVINCE_MAP + '\')"></div>';
		m += '<BR><DIV class=ptstat>DISTANCE CALCULATOR</div><DIV class=ptentry><TABLE align=center cellpadding=1 cellspacing=0>\
      <TR><TD class=xtab align=left><INPUT id=plot type=checkbox>Plot coords on map.</td></tr>\
      <TR><TD class=xtab align=left><B>First Location: </b></td><TD  class=xtab> X: <INPUT id=calcX type=text\> Y: <INPUT id=calcY type=text\> Or, choose city: <SPAN id=ptloc1></span></td></tr>\
      <TR><TD class=xtab align=left><B>Second Location: </b></td><TD class=xtab> X: <INPUT id=calcX2 type=text\> Y: <INPUT id=calcY2 type=text\> Or, choose city: <SPAN id=ptloc2></span></td></tr></table>\
      <CENTER><DIV style="width:60%; font-size:14px; border: 1px solid; background-color:white; margin:20px 3px 3px 0px; padding:4px" id=ptdistout></div></div>\
      <BR></center></div>';
		t.cont.innerHTML = m + '</div>';
		for (var c = 0; c < Cities.numCities; c++)
			t.makeCityImg(c, document.getElementById('ptProvMap'));
		new CdispCityPicker('ptloc1', document.getElementById('ptloc1'), true, t.eventLocChanged, 0).bindToXYboxes(document.getElementById('calcX'), document.getElementById('calcY'));
		new CdispCityPicker('ptloc2', document.getElementById('ptloc2'), true, t.eventLocChanged, 0).bindToXYboxes(document.getElementById('calcX2'), document.getElementById('calcY2'));
		t.eventLocChanged(Cities.cities[0], Cities.cities[0].x, Cities.cities[0].y);
		document.getElementById('plot').addEventListener('change', function () {
			t.plotCityImg(0, document.getElementById('ptProvMap'), document.getElementById('calcX').value, document.getElementById('calcY').value);
			t.plotCityImg(1, document.getElementById('ptProvMap'), document.getElementById('calcX2').value, document.getElementById('calcY2').value);
		}, false);
	},
	hide: function () {},
	show: function () {},
	// var provMapCoords = {imgWidth:680, imgHeight:654, mapWidth:595, mapHeight:595, leftMargin:44, topMargin:39};  
	makeCityImg: function (cityNum, eMap) {
		//logit ('makeCityImg: '+ cityNum);    
		var t = Tabs.Info;
		var city = Cities.cities[cityNum];
		//    var off = getAbsoluteOffsets (eMap);
		var x = parseInt((provMapCoords.mapWidth * city.x) / 750);
		var y = parseInt((provMapCoords.mapHeight * city.y) / 750);
		var ce = document.createElement('div');
		ce.style.background = 'black';
		ce.style.opacity = '1.0';
		ce.style.position = 'relative';
		ce.style.display = 'block';
		ce.style.width = '14px';
		ce.style.height = '16px';
		ce.style.border = '1px solid #fff';
		ce.style.color = 'white';
		ce.style.textAlign = 'center';
		ce.style.top = (y + provMapCoords.topMargin - (cityNum * 16) - 8) + 'px';
		ce.style.left = (x + provMapCoords.leftMargin - 7) + 'px';
		eMap.appendChild(ce);
		ce.innerHTML = (cityNum + 1) + '';
	},
	plotCityImg: function (cityNum, eMap, x, y) {
		//logit ('makeCityImg: '+ cityNum);    
		var t = Tabs.Info;
		var xplot = parseInt((provMapCoords.mapWidth * x) / 750);
		var yplot = parseInt((provMapCoords.mapHeight * y) / 750);
		if (document.getElementById('plotmap_' + cityNum) == null) {
			var ce = document.createElement('div');
			ce.style.background = 'white';
			ce.id = 'plotmap_' + cityNum;
			ce.style.opacity = '1.0';
			ce.style.position = 'relative';
			ce.style.display = 'block';
			ce.style.width = '14px';
			ce.style.height = '16px';
			ce.style.border = '1px solid #fff';
			ce.style.color = 'black';
			ce.style.textAlign = 'center';
		} else {
			ce = document.getElementById('plotmap_' + cityNum);
		}
		ce.style.top = (yplot + provMapCoords.topMargin - ((Cities.numCities + cityNum) * 16) - 8) + 'px';
		ce.style.left = (xplot + provMapCoords.leftMargin - 7) + 'px';
		eMap.appendChild(ce);
		ce.innerHTML = (cityNum + 1) + '';
	},
	eventLocChanged: function (city, x, y) {
		var t = Tabs.Info;
		var x1 = parseInt(document.getElementById('calcX').value);
		var x2 = parseInt(document.getElementById('calcX2').value);
		if (isNaN(x2))
			return;
		var y1 = parseInt(document.getElementById('calcY').value);
		var y2 = parseInt(document.getElementById('calcY2').value);
		var m = 'The distance from ' + x1 + ',' + y1 + ' to ' + x2 + ',' + y2 + ' is: &nbsp;<B>' + distance(x1, y1, x2, y2).toFixed(2) + '</b>';
		document.getElementById('ptdistout').innerHTML = m;
		if (document.getElementById('plot').checked) {
			t.plotCityImg(0, document.getElementById('ptProvMap'), x1, y1);
			t.plotCityImg(1, document.getElementById('ptProvMap'), x2, y2);
		}
	},
}
/*********************************** Options Tab ***********************************/
Tabs.Options = {
	tabOrder: 40,
	tabLabel: 'Options',
	cont: null,
	curTabBut: null,
	curTabName: null,
	fixAvailable: {},
	refreshTimer: null,
	AscensionTimer: null,
	init: function (div) {
		var t = Tabs.Options;
		t.cont = div;
		var main = '<TABLE class=ptTab align=center><TR><TD><INPUT class=pbSubtab ID=ptmrchSubU type=submit value="Options"></td>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubV type=submit value="Layout"></td></tr></table><HR class=ptThin>';
		main += '<TD width = "100px" ; border:none"><a href="https://code.google.com/p/koc-power-tools/wiki/HowToOptions" target="_blank">HELP</a></td></tr>';
		main += '<DIV id=ptOptOutput style="margin-top:10px; background-color:white; height:680px; overflow:auto;"></div>';
		t.cont.innerHTML = main;
		t.Overv = document.getElementById('ptOptOutput');
		document.getElementById('ptmrchSubU').addEventListener('click', e_butSubtab, false);
		document.getElementById('ptmrchSubV').addEventListener('click', e_butSubtab, false);
		changeSubtab(document.getElementById('ptmrchSub' + Options.curOptTab));

		function e_butSubtab(evt) {
			changeSubtab(evt.target);
		}

		function changeSubtab(but) {
			if (but == t.curTabBut)
				return;
			if (t.curTabBut) {
				t.curTabBut.className = 'pbSubtab';
				t.curTabBut.disabled = false;
			}
			t.curTabBut = but;
			but.className = 'pbSubtab pbSubtabSel';
			but.disabled = true;
			t.curTabName = but.id.substr(9);
			Options.curOptTab = t.curTabName;
			t.show();
		}
	},
	SetOptions: function () {
		var t = Tabs.Options;
		try {
			m = '<TABLE class=ptTab>';
			m += '<TR><TD colspan=2><B>Config:</b></td></tr>';
			m += '<TR><TD><INPUT id=ptAllowWinMove type=checkbox /></td><TD>Enable window drag (move window by dragging top bar with mouse)</td></tr>';
			m += '<TR><TD><INPUT id=ptHideOnGoto type=checkbox /></td><TD>Hide window when clicking on map coordinates.</td></tr>';
			m += '<TR><TD><INPUT id=ptEnableFoodWarn type=checkbox /></td><TD>Show \'food left\' in RED if food will run out in less than';
			m += '<INPUT id=optFoodHours type=text size=3 value="' + Options.foodWarnHours + '"> hours, does NOT affect the food alert anymore!</td></tr>';
			//	  m+='<TR><TD><INPUT id=ptEnableFoodTower type=checkbox /></td><TD>Enable Tower food alert. (Warning set to 6 hours, checked every 30min.)</td></tr>';
			m += '<TR><TD><INPUT id=ptEnableFoodTower type=checkbox disabled=true /></td><TD>Disabled Tower food alert in Power Tools - instead, use the Power Bot function.</td></tr>';
			m += '<TR><TD><INPUT id=ptEnableWisperAlert type=checkbox /></td><TD>Enable sound alert on whisper' + htmlSelector({
				whisper: 'arrow',
				whisper2: 'doorbell'
			}, Options.whisperplay, 'id=ptwhisplay') + '</td></tr>';
			m += '<TR><TD><INPUT id=ptEnableTowerAlert type=checkbox /></td><TD>Enable sound alert on tower alert in chat</td></tr>';
			m += '<TR><TD><INPUT id=ptupdate type=checkbox ' + (GlobalOptions.ptupdate ? 'CHECKED ' : '') + '/></td><TD>Check updates on ' + htmlSelector({
				0: 'GreasyFork',
				1: 'Google Code'
			}, GlobalOptions.ptupdatebeta, 'id=ptupdatebeta') + ' (all domains) &nbsp; &nbsp; <INPUT id=ptupdatenow type=submit value="Update Now" /></td></tr>';
			m += '<TR><TD><INPUT id=ptEnableMiniRefresh type=checkbox ' + (Options.miniRefresh ? 'CHECKED ' : '') + '/></td><TD> Refresh data/marches every ';
			m += '<INPUT id=optMiniRefreshIntvl type=text size=3 value="' + Options.miniRefreshIntvl + '"> minutes</td></tr>';
			m += '<TR><TD colspan=2><br><B>KofC Features:</b></td></tr>';
			m += '<TR><TD><INPUT id=togAllRpts type=checkbox /></td><TD>Enable enhanced Alliance Reports.</td></tr>';
			m += '<TR><TD><INPUT id=togAllowAlter type=checkbox /></td><TD>Allow other scripts to change format of Alliance Reports.</td></tr>';
			m += '<TR><TD><INPUT id=togAllMembers type=checkbox /></td><TD>Enable enhanced alliance members view.</td></tr>';
			m += '<TR><TD><INPUT id=togPageNav type=checkbox /></td><TD>Enhanced page navigation for messages and reports.</td></tr>';
			m += '<TR><TD><INPUT id=togGmtClock type=checkbox /></td><TD>Enable GMT clock next to "Camelot Time" </td></tr>';
			m += '<TR><TD><INPUT id=togAttackPicker type=checkbox /></td><TD>Enable target city picker in attack dialog (reinforce, reassign and transport)</td></tr>';
			m += '<TR><TD><INPUT id=togBatRounds type=checkbox /></td><TD>Display # of rounds in battle reports</td></tr>';
			m += '<TR><TD><INPUT id=togAtkDelete type=checkbox /></td><TD>Enable delete button when displaying battle report</td></tr>';
			m += '<TR><TD><INPUT id=togRptGift type=checkbox /></td><TD>Enable delete gifts report button in inbox</td></tr>';
			m += '<TR><TD><INPUT id=togMapInfo4 type=checkbox /></td><TD>Display Province and Truce Status in map tooltips</td></tr>';
			m += '<TR><TD><INPUT id=togCV type=checkbox /></td><TD>Enable enhanced city buttons</td></tr>';
			m += '<TR><TD></td><TD><INPUT id=togDbClkDef type=checkbox /> Enable hide/defend by double clicking city icon</td></tr>';
			m += '<TR><TD></td><TD><INPUT id=togColrCty type=checkbox /> Enable color icon for city type (refresh required)</td></tr>';
			m += '<TR><TD></td><TD><INPUT id=ptWarnAscension type=checkbox ' + (Options.WarnAscension ? 'CHECKED ' : '') + '/>Highlight when Ascension Protection will expire within ';
			m += '<INPUT id=ptWarnAscensionInterval type=text size=3 value="' + Options.WarnAscensionInterval + '"> hours</td></tr>';
			m += '<TR><TD colspan=2><br><B>KofC Bug Fixes:</b></td></tr>';
			m += '<TR><TD><INPUT id=togTowerFix type=checkbox /></td><TD>Fix tower report to show exact target (city, wild or invalid)</td></tr>';
			m += '<TR><TD><INPUT id=togKnightSelect type=checkbox /></td><TD>Do not automatically select a knight when changing march type to scout, transport or reassign</td></tr>';
			m += '<TR><TD><INPUT id=togCoordBox type=checkbox /></td><TD>Keep map coordinate box/bookmarks on top of troop activity</td></tr>';
			m += '<TR><TD><INPUT id=togMapInfo type=checkbox /></td><TD>Fix reassign button on maptile info</td></tr>';
			m += '<TR><TD><INPUT id=togMapInfo2 type=checkbox /></td><TD>Add reassign button when clicked on own city</td></tr>';
			m += '<TR><TD><INPUT id=togMapInfo3 type=checkbox /></td><TD>Include player name / city name in new bookmarks</td></tr>';
			m += '<TR><TD><INPUT id=togMarchUnits type=checkbox  disabled/></td><TD>Fix march size calculation in march screen (Fixed by Kabam)</td></tr>';
			m += '<TR><TD><INPUT id=togLoadCapFix type=checkbox /></td><TD>Limit load capacity to not exceed throne room load cap</td></tr>';
			m += '<TR><TD><INPUT id=togFilterTroopsFix type=checkbox /></td><TD>Don\'t filter troop types for transport</td></tr>';
			m += '<TR><TD><INPUT id=togApothTimeFix type=checkbox /></td><TD>Fix revival time calculator (not working for max button clicked)</td></tr>';
			m += '<TR><TD><INPUT id=togTRAetherCostFix type=checkbox /></td><TD>Fix display of aetherstones for throne room upgrade/enhance</td></tr>';
			m += '<TR><TD><INPUT id=togMMBImageFix type=checkbox /></td><TD>Post correct image to facebook for Merlin Box</td></tr>';
			m += '<TR><TD><INPUT id=togChatTimeFix type=checkbox /></td><TD>Always show local time on chat posts</td></tr>';
			m += '<TR><TD><INPUT id=togAllowMulti type=checkbox /></td><TD>Disable Multi-Browser check v2 (experimental)</td></tr>';
			m += '<TR><TD><INPUT id=togRaidPatch type=checkbox /></td><TD>Fix stuck raid marches (experimental)</td></tr>';
			m += '<TR><td><INPUT id=MoveFurnitureChk type=checkbox /></td><td>Rearrange throne room furniture for better visibility&nbsp;(needs refresh)</td></tr>';
			m += '<TR><TD><INPUT id=togMapDblClickFix type=checkbox /></td><TD>Restore double click map tile</td></tr>';
			m += '<TR><TD colspan=2><br><B>Auto Training:</b></td></tr>';
			m += '<TR><TD></TD><TD><INPUT id=optAutoTrainMins type=text size=1 value="' + parseInt(AutoTrainOptions.intervalSecs / 60) + '"> minutes between auto-training.</td></tr>';
			m += '</table><BR><BR><HR>Note that if a checkbox is greyed out there has probably been a change of KofC\'s code, rendering the option inoperable.';
			t.Overv.innerHTML = m;
			t.togOpt('ptEnableFoodWarn', 'enableFoodWarn');
			t.togOpt('ptEnableFoodTower', 'enableFoodTower');
			t.togOpt('ptEnableWisperAlert', 'enableWhisperAlert');
			t.togOpt('ptEnableTowerAlert', 'enableTowerAlert');
			t.togOpt('ptHideOnGoto', 'hideOnGoto');
			t.togOpt('ptAllowWinMove', 'ptWinDrag', mainPop.setEnableDrag);
			t.togOpt('togAllowAlter', 'allowAlterAR');
			t.togOpt('togAllRpts', 'enhanceARpts', AllianceReports.enable);
			t.togOpt('togAllMembers', 'enhanceViewMembers', AllianceReports.enable_viewmembers);
			t.togOpt('togTowerFix', 'fixTower', TowerAlerts.enableFixTarget, TowerAlerts.isFixTargetAvailable);
			t.togOpt('togPageNav', 'fixPageNav', PageNavigator.enable, PageNavigator.isAvailable);
			t.togOpt('togGmtClock', 'gmtClock', GMTclock.setEnable);
			t.togOpt('togKnightSelect', 'fixKnightSelect', AttackDialog.setEnable, AttackDialog.isKnightSelectAvailable);
			t.togOpt('togAttackPicker', 'attackCityPicker', AttackDialog.setEnable, AttackDialog.isCityPickerAvailable);
			t.togOpt('togRptGift', 'enhancedinbox', DispReport.setEnable, DispReport.isDispReportAvailable);
			t.togOpt('togCV', 'EnhCBtns', t.e_WarnAscensionChanged);
			t.togOpt('togDbClkDef', 'DbClkDefBtns');
			t.togOpt('togColrCty', 'ColrCityBtns');
			t.togOpt('togCoordBox', 'mapCoordsTop', CoordBox.setEnable, CoordBox.isAvailable);
			t.togOpt('togMapInfo', 'mapInfo', mapinfoFix.setEnable, mapinfoFix.isAvailable);
			t.togOpt('togMapInfo2', 'mapInfo2', mapinfoFix.setEnable2, mapinfoFix.isAvailable2);
			t.togOpt('togMapInfo3', 'mapInfo3', mapinfoFix.setEnable3, mapinfoFix.isAvailable3);
			t.togOpt('togMapInfo4', 'dispStatus', mapinfoFix.setEnableDispStatus, mapinfoFix.isAvailableDispStatus);
//			t.togOpt('togMarchUnits', 'fixMarchUnits', MarchUnitsFix.setEnable, MarchUnitsFix.isAvailable);
			t.togOpt('togLoadCapFix', 'fixLoadCap', LoadCapFix.setEnable, LoadCapFix.isAvailable);
			t.togOpt('togFilterTroopsFix', 'DontFilterTransportTroops');
			t.togOpt('togApothTimeFix', 'fixApothTime', ApothTimeFix.setEnable, ApothTimeFix.isAvailable);
			t.togOpt('togTRAetherCostFix', 'fixTRAetherCost', TRAetherCostFix.setEnable, TRAetherCostFix.isAvailable);
			t.togOpt('togMMBImageFix', 'fixMMBImage', mmbImageFix.setEnable, mmbImageFix.isAvailable);
			t.togOpt('togChatTimeFix', 'fixChatTime', ChatTimeFix.setEnable, ChatTimeFix.isAvailable);
			t.togOpt('togBatRounds', 'dispBattleRounds', null, battleReports.isRoundsAvailable);
			t.togOpt('togAtkDelete', 'reportDeleteButton', null, battleReports.isRoundsAvailable);
			t.togOpt('togAllowMulti', 'allowMultiBroswer', bypassMulti.setEnable, bypassMulti.isAvailable);
			t.togOpt('togRaidPatch', 'raidPatch', BarbRaidMarchPatch.setEnable, BarbRaidMarchPatch.isAvailable);
			t.togOpt('MoveFurnitureChk', 'MoveFurniture');
			t.togOpt('togMapDblClickFix', 'fixMapDblClick', MapDoubleClickFix.setEnable, MapDoubleClickFix.isAvailable);
			document.getElementById('ptupdate').addEventListener('change', t.e_updateChanged, false);
			document.getElementById('ptEnableMiniRefresh').addEventListener('change', t.e_miniRefreshChanged, false);
			document.getElementById('ptWarnAscension').addEventListener('change', t.e_WarnAscensionChanged, false);
			document.getElementById('ptupdatebeta').addEventListener('change', function () {
				GlobalOptions.ptupdatebeta = document.getElementById('ptupdatebeta').value;
				GM_setValue('Options_??', JSON2.stringify(GlobalOptions));
			}, false);
			document.getElementById('ptwhisplay').addEventListener('change', function () {
				Options.whisperplay = this.value;
				saveOptions();
			}, false);
			document.getElementById('ptupdatenow').addEventListener('click', function () {
				AutoUpdater_116541.call(true, true);
			}, false);
			document.getElementById('optFoodHours').addEventListener('change', function () {
				var x = document.getElementById('optFoodHours').value;
				if (isNaN(x) || x < 0.01 || x > 99999) {
					document.getElementById('optFoodHours').value = Options.foodWarnHours;
					return;
				}
				Options.foodWarnHours = x;
				saveOptions();
			}, false);
			document.getElementById('optMiniRefreshIntvl').addEventListener('change', function () {
				var x = document.getElementById('optMiniRefreshIntvl').value;
				if (isNaN(x) || x < 2 || x > 999) {
					document.getElementById('optMiniRefreshIntvl').value = Options.miniRefreshIntvl;
					return;
				}
				Options.miniRefreshIntvl = x;
				saveOptions();
			}, false);
			document.getElementById('ptWarnAscensionInterval').addEventListener('change', function () {
				var x = document.getElementById('ptWarnAscensionInterval').value;
				if (isNaN(x) || x < 1 || x > 999) {
					document.getElementById('ptWarnAscensionInterval').value = Options.WarnAscensionInterval;
					return;
				}
				Options.WarnAscensionInterval = x;
				saveOptions();
			}, false);
			if (Options.EnhCBtns && Options.WarnAscension) {
				Tabs.Options.checkAscension();
				clearInterval(t.WarnAscensionTimer);
				t.WarnAscensionTimer = setInterval(function () {
					Tabs.Options.checkAscension();
				}, 60 * 1000);
			}
			document.getElementById('optAutoTrainMins').addEventListener('change', function () {
				AutoTrainOptions.intervalSecs = 60 * document.getElementById('optAutoTrainMins').value;
				saveAutoTrainOptions();
			}, false);
			if (Options.miniRefresh) {
				clearInterval(t.refreshTimer);
				t.refreshTimer = setInterval(function () {
					Tabs.Options.updateAll();
				}, Options.miniRefreshIntvl * 60 * 1000);
			}
		} catch (e) {
			new CdialogCancelContinue('<PRE>' + e + '</pre>', null, null, true);
			t.Overv.innerHTML = '<PRE>' + e + '</pre>';
		}
	},
	Layout: function () {
		var t = Tabs.Options;
		try {
			m = '<TABLE class=ptTab>';
			m += '<TR><TD colspan=2><U><B>Chat Layout:</b></u></td></tr>';
			m += '<TR><TD><INPUT id=togChatStuff type=checkbox /></td><TD>Enable Chat Enable Chat enhancements (clickable coords, click on icon to whisper, colors).</td></tr>';
			m += '<TR><TD><INPUT id=togChatGlobal type=checkbox /></td><TD>Enable Global chat background color.</td></tr>';
			m += '<TR><TD><INPUT id=togChatAlliance type=checkbox /></td><TD>Enable Alliance chat background color.</td></tr>';
			m += '<TR><TD><INPUT id=togChatWhisper type=checkbox /></td><TD>Enable Whisper in Color Font.</td></tr>';
			m += '<TR><TD><INPUT id=togChatBold type=checkbox /></td><TD>Enable Chat in Bold Font.</td></tr>';
			m += '<TR><TD><INPUT id=togChatAttack type=checkbox /></td><TD>Enable background color on tower alert.</td></tr>';
			m += '<TR><TD><INPUT id=togChatLead type=checkbox /></td><TD>Enable background for alliance Leaders.</td></tr>';
			m += '<TR><TD><INPUT id=togChatIcon type=checkbox /></td><TD>Enable facebook profile pictures in chat instead of kabam avatars.<SPAN class=boldRed>&nbsp;(NEW)</span></td></tr>';
			m += '</table>';
			m += '<TABLE class=ptTab><BR><TR><TD colspan=2><U><B>Colors: &nbsp;(Refresh for effect)</b></u></td></tr>';
			m += '<TR><TD>Chat Color - Global: </td><TD><INPUT id=togGlobal type=text size=7 maxlength=7 value="' + Colors.ChatGlobal + '"></td>&nbsp;<TD style="background-color:' + Colors.ChatGlobal + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>Chat Color - Alliance: </td><TD><INPUT id=togAll type=text size=7 maxlength=7 value="' + Colors.ChatAll + '"></td>&nbsp;<TD style="background-color:' + Colors.ChatAll + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>Chat Color - Tower Alert: </td><TD><INPUT id=togChatAtt type=text size=7 maxlength=7 value="' + Colors.ChatAtt + '"></td>&nbsp;<TD style="background-color:' + Colors.ChatAtt + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>Chat Color - Whisper Alert: </td><TD><INPUT id=togWhisper type=text size=7 maxlength=7 value="' + Colors.ChatWhisper + '"></td>&nbsp;<TD style="background-color:' + Colors.ChatWhisper + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>Chat Color - Chancy: </td><TD><INPUT id=togChatC type=text size=7 maxlength=7 value="' + Colors.ChatChancy + '"></td>&nbsp;<TD style="background-color:' + Colors.ChatChancy + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>Chat Color - Vice-C: </td><TD><INPUT id=togChatVC type=text size=7 maxlength=7 value="' + Colors.ChatVC + '"></td>&nbsp;<TD style="background-color:' + Colors.ChatVC + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>Chat Color - Officers: </td><TD><INPUT id=togChatLeaders type=text size=7 maxlength=7 value="' + Colors.ChatLeaders + '"></td>&nbsp;<TD style="background-color:' + Colors.ChatLeaders + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>General - Dark Row: </td><TD><INPUT id=togDarkRow type=text size=7 maxlength=7 value="' + Colors.DarkRow + '"></td>&nbsp;<TD style="background-color:' + Colors.DarkRow + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>General - Button Selected: </td><TD><INPUT id=togButClick type=text size=7 maxlength=7 value="' + Colors.ButtonSelected + '"></td>&nbsp;<TD style="background-color:' + Colors.ButtonSelected + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>Overview - Dark Rows:</td><TD><INPUT id=togOverDarkRow type=text size=7 maxlength=7 value="' + Colors.OverviewDarkRow + '"></td>&nbsp;<TD style="background-color:' + Colors.OverviewDarkRow + '" width=30px>&nbsp;</td></tr>';
			m += '<TR><TD>Transparency:&nbsp;&nbsp;<span style="color:#800;"><sup>(0.7 - 2)</sup></span></td><TD><INPUT id=togOpacity type=text size=3 maxlength=3 value="' + Colors.Opacity + '"/></td><TD></tr>';
			m += '</table><BR><BR><DIV>HTML colors:&nbsp;&nbsp;&nbsp;';
			m += '<a href="http://www.colorpicker.com/" target="_blank">Color Picker</a>&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;';
			m += '<a href="http://www.w3schools.com/html/html_colors.asp" target="_blank">Colors</a>';
			m += '</table><BR><BR><HR>To apply colors you need to REFRESH!<BR>';
			m += strButton20('Reset Colors', 'id=ResetALL');
			t.Overv.innerHTML = m;
			t.togOpt('togChatStuff', 'chatEnhance', ChatStuff.setEnable, ChatStuff.isAvailable);
			t.togOpt('togChatGlobal', 'chatglobal');
			t.togOpt('togChatAlliance', 'chatalliance');
			t.togOpt('togChatWhisper', 'chatwhisper');
			t.togOpt('togChatBold', 'chatbold');
			t.togOpt('togChatAttack', 'chatAttack');
			t.togOpt('togChatLead', 'chatLeaders');
			t.togOpt('togChatIcon', 'ChatIcons');
			document.getElementById('togGlobal').addEventListener('change', function () {
				Colors.ChatGlobal = document.getElementById('togGlobal').value;
				t.Layout()
			}, false);
			document.getElementById('togChatLeaders').addEventListener('change', function () {
				Colors.ChatLeaders = document.getElementById('togChatLeaders').value;
				t.Layout()
			}, false);
			document.getElementById('togChatC').addEventListener('change', function () {
				Colors.ChatChancy = document.getElementById('togChatC').value;
				t.Layout()
			}, false);
			document.getElementById('togChatVC').addEventListener('change', function () {
				Colors.ChatVC = document.getElementById('togChatVC').value;
				t.Layout()
			}, false);
			document.getElementById('togDarkRow').addEventListener('change', function () {
				Colors.DarkRow = document.getElementById('togDarkRow').value;
				t.Layout()
			}, false);
			document.getElementById('togButClick').addEventListener('change', function () {
				Colors.ButtonSelected = document.getElementById('togButClick').value;
				t.Layout()
			}, false);
			document.getElementById('togOverDarkRow').addEventListener('change', function () {
				Colors.OverviewDarkRow = document.getElementById('togOverDarkRow').value;
				t.Layout()
			}, false);
			document.getElementById('togAll').addEventListener('change', function () {
				Colors.ChatAll = document.getElementById('togAll').value;
				t.Layout()
			}, false);
			document.getElementById('togChatAtt').addEventListener('change', function () {
				Colors.ChatAtt = document.getElementById('togChatAtt').value;
				t.Layout()
			}, false);
			document.getElementById('togWhisper').addEventListener('change', function () {
				Colors.ChatWhisper = document.getElementById('togWhisper').value;
				t.Layout()
			}, false);
			document.getElementById('togOpacity').addEventListener('change', function () {
				Colors.Opacity = document.getElementById('togOpacity').value;
				t.Layout()
			}, false);
			document.getElementById('ResetALL').addEventListener('click', function () {
				RemoveList = (GM_listValues());
				for (i = 0; i < RemoveList.length; i++) {
					if (RemoveList[i] == "Colors") GM_deleteValue(RemoveList[i]);
				}
				ResetColors = true;
				reloadKOC();
			}, false);
		} catch (e) {
			new CdialogCancelContinue('<PRE>' + inspect(e, 3, 1) + '</pre>', null, null, true);
			t.cont.innerHTML = '<PRE>' + e.name + ' : ' + e.message + '</pre>';
		}
	},
	hide: function () {},
	show: function () {
		var t = Tabs.Options;
		if (t.curTabName == 'U')
			t.SetOptions();
		else if (t.curTabName == 'V')
			t.Layout();
	},
	togOpt: function (checkboxId, optionName, callEnable, callIsAvailable) {
		var t = Tabs.Options;
		var checkbox = document.getElementById(checkboxId);
		if (callIsAvailable && callIsAvailable() == false) {
			checkbox.disabled = true;
			return;
		}
		if (Options[optionName])
			checkbox.checked = true;
		checkbox.addEventListener('change', new eventToggle(checkboxId, optionName, callEnable).handler, false);

		function eventToggle(checkboxId, optionName, callOnChange) {
			this.handler = handler;
			var optName = optionName;
			var callback = callOnChange;

			function handler(event) {
				Options[optionName] = this.checked;
				saveOptions();
				if (callback != null)
					callback(this.checked);
			}
		}
	},
	e_updateChanged: function () {
		GlobalOptions.ptupdate = document.getElementById('ptupdate').checked;
		GM_setValue('Options_??', JSON2.stringify(GlobalOptions));
	},
	e_miniRefreshChanged: function () {
		Options.miniRefresh = document.getElementById('ptEnableMiniRefresh').checked;
		saveOptions();
		clearInterval(t.refreshTimer);
		if (Options.miniRefresh) {
			Tabs.Options.updateAll();
			t.refreshTimer = setInterval(function () {
				Tabs.Options.updateAll();
			}, Options.miniRefreshIntvl * 60 * 1000);
		}
	},
	e_WarnAscensionChanged: function () {
		Options.WarnAscension = document.getElementById('ptWarnAscension').checked;
		saveOptions();
		clearInterval(t.WarnAscensionTimer);
		if (Options.EnhCBtns && Options.WarnAscension) {
			t.WarnAscensionTimer = setInterval(function () {
				Tabs.Options.checkAscension();
			}, 60 * 1000); // every min?
		}
		Tabs.Options.checkAscension();
	},
	checkAscension: function () {
		logit('checking ascension...');
		var t = Tabs.Options;
		for (i = 0; i < uW.seed.cities.length; i++) {
			var cityidx = i + 1;
			var city = document.getElementById('citysel_' + cityidx);
			if (!city) {
				setTimeout(t.checkAscension, 2000);
				return;
			}
			if (!Options.WarnAscension || !Options.EnhCBtns) {
				uW.jQuery('#citysel_' + cityidx).removeClass('city_warning');
			} else {
				var cityExpTime = uW.seed.cityData.city[uW.seed.cities[i][0]].prestigeInfo.prestigeBuffExpire;
				if (!isNaN(cityExpTime) && (cityExpTime >= unixTime()) && ((cityExpTime - unixTime()) <= (Options.WarnAscensionInterval * 3600))) {
					if (uW.jQuery('#citysel_' + cityidx).hasClass('city_unselected')) {
						uW.jQuery('#citysel_' + cityidx).addClass('city_warning');
					}
				} else {
					uW.jQuery('#citysel_' + cityidx).removeClass('city_warning');
				}
			}
		}
	},
	// This function grabs a fresh copy of the main_src and replaces the seed variable with the returned data.
	// This refreshes the data without a full web page refresh.
	updateAll: function () {
		// stop update_seed_ajax while this is happening. This is a kabam indicator (but it does still fire on a cancel training.. who knows why they've done it like that)
		uW.g_update_seed_ajax_do = true;
		//potential fix for missing troop recalls:  true flag forces troop march update
		//unsafeWindow.update_seed_ajax(true);
		// update the timestamps
		var ts = (new Date().getTime() / 1000) + uW.g_timeoff;
		var cts = parseInt((ts - 25.1) * 1000);
		var upd = window.self.location.href;
		upd = upd.replace(/ts=\d*\.\d+/, "ts=" + ts);
		upd = upd.replace(/cts=\d*/, "cts=" + cts);
		//logit("Request: " + upd);
		var params = uW.Object.clone(uW.g_ajaxparams);
		new AjaxRequest(
			upd, {
				method: "POST",
				parameters: params,
				onSuccess: function (rslt) {
					// let update_seed_ajax run again in game
					uW.g_update_seed_ajax_do = false;
					var mainSrcHTMLCode = rslt.responseText;
					var myregexp = /var seed=\{.*?\};/;
					var match = myregexp.exec(mainSrcHTMLCode);
					if (match != null) {
						//logit("found match");
						result = match[0];
						result = result.substr(4);
						var seed2 = eval(result);
						for (jj in seed2) {
							if (jj != 'resources')
								if (seed2.hasOwnProperty(jj)) {
									Seed[jj] = seed2[jj];
								}
						}
						//                         delete Seed.ss;
						for (var o = 0; o < Seed.cities.length; o++) {
							var n = Seed.cities[o][0];
							Seed.citystats["city" + n].pop[0] = parseInt(Seed.citystats["city" + n].pop[0]);
							Seed.citystats["city" + n].pop[1] = parseInt(Seed.citystats["city" + n].pop[1]);
							Seed.citystats["city" + n].pop[2] = parseInt(Seed.citystats["city" + n].pop[2]);
							Seed.citystats["city" + n].gold[0] = parseInt(Seed.citystats["city" + n].gold[0]);
							Seed.citystats["city" + n].gold[1] = parseInt(Seed.citystats["city" + n].gold[1]);
							Seed.newTradeReports = parseInt(Seed.newTradeReports);
							for (var m = 1; m < 5; m++) {
								Seed.resources["city" + n]["rec" + m][0] = parseInt(Seed.resources["city" + n]["rec" + m][0]);
								Seed.resources["city" + n]["rec" + m][1] = parseInt(Seed.resources["city" + n]["rec" + m][1]);
								Seed.resources["city" + n]["rec" + m][2] = parseInt(Seed.resources["city" + n]["rec" + m][2]);
								Seed.resources["city" + n]["rec" + m][3] = parseInt(Seed.resources["city" + n]["rec" + m][3]);
							}
							var b = Seed.queue_con["city" + n];
							var d = unsafeWindow.Object.keys(Seed.buildings["city" + n]);
							for (var h = 0; h < b.length; h++) {
								for (var m = 0; m < d.length; m++) {
									if (Seed.buildings["city" + n][d[m]][3] == b[h][2]) {
										b[h][7] = Seed.buildings["city" + n][d[m]][2];
										break;
									}
								}
							}
						}
						if (Seed.queue_throne.length == 0) {
							Seed.queue_throne = {}
						}
						unsafeWindow.kocThroneItems = {};
						unsafeWindow.createThroneItems();
						unsafeWindow.cm.ThroneView.renderInventory(unsafeWindow.kocThroneItems);
						unsafeWindow.seed.player.g = seed_player_g;
					}
				},
				onFailure: function () {
					// let update_seed_ajax run again in game
					uW.g_update_seed_ajax_do = false;
					logit("ERROR ********: ", inspect(rslt, 3, 1));
					if (notify != null)
						notify(rslt.errorMsg);
				},
			});
	},
}
/*******************   KOC Map interface ****************/
Map = {
	/***
 0: bog
10: grassland
11: lake
20: woods
30: hills
40: mountain
50: plain
51: city / barb
53: misted city
***/
	generateBlockList: function (left, top, width) {
		var width5 = parseInt(width / 5);
		var bl = [];
		for (x = 0; x < width5; x++) {
			xx = left + (x * 5);
			if (xx > 745)
				xx -= 750;
			for (y = 0; y < width5; y++) {
				yy = top + (y * 5);
				if (yy > 745)
					yy -= 750;
				bl.push('bl_' + xx + '_bt_' + yy);
			}
		}
		return bl.join(",");
	},
	callback: null,
	request: function (left, top, width, cb) {
		if (DEBUG_TRACE) logit(" 1 Map.request(): " + left + ' , ' + top + ' , ' + width);
		left = parseInt(left / 5) * 5;
		top = parseInt(top / 5) * 5;
		width = parseInt((width + 4) / 5) * 5;
		var blockString = this.generateBlockList(left, top, width);
		Map.callback = cb;
		if (uW.SANDBOX)
			return RequestMAPTEST(left, top, width, callback);
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.blocks = blockString;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/fetchMapTiles.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (DEBUG_TRACE) logit(" 2 Map.request  Map = " + inspect(Map, 2, 1, 2));
				Map.callback(left, top, width, rslt);
			},
			onFailure: function (rslt) {
				Map.callback(left, top, width, rslt);
			}
		});
	},
};
/*************************************** Train Tab ***********************************************/
Tabs.Train = {
	tabOrder: 15,
	tabLabel: uW.g_js_strings.commonstr.train,
	cont: null,
	timer: null,
	stats: {},
	selectedCity: {},
	cityNum: 0,
	trainTimer: null,
	running: false,
	gamble: {
		"1": {
			"min": "5",
			"max": "15",
			"cost": "2"
		},
		"2": {
			"min": "10",
			"max": "25",
			"cost": "4"
		}
	},
	nextAuto: null,
	defenseOptions: "<option value='53'>Crossbow</option><option value='55'>Trebuchet</option><option value='60'>Trap</option><option value='61'>Caltrop</option><option value='62'>Spiked Barrier</option>",
	prevCityNo: 0,
	init: function (div) {
		var t = Tabs.Train;
		t.cont = div;
		uW.cancelTrain = t.butcancelTrain;
		uW.cancelFort = t.butcancelFort;
		s = "<DIV style='max-height:740px; height:740px; max-width:745px; width:745px; overflow-y:auto'><DIV id=trainTopSelect >\
      <DIV class=ptstat id=trainheader>" + uW.g_js_strings.modal_openBarracks.trainttl + " & " + uW.g_js_strings.modal_openWalls.builddefenses + "</div>\
      <DIV style='height:5px'></div><DIV class=ptentry>\
      <DIV style='text-align:center; margin-bottom:5px;'>" + uW.g_js_strings.commonstr.city + ": &nbsp; <span id=ptspeedcity></span></div>\
	  <TABLE class=ptTab width=100%><TR valign=top><TD width=50%>\
      <TABLE align=center><TR><TD align=right>" + uW.g_js_strings.modal_messages_viewdesertionreports.trooptypes + ": </td><TD colspan=2>\
      <SELECT id=ptttType>";
		for (var ui in uW.cm.UNIT_TYPES) {
			i = uW.cm.UNIT_TYPES[ui];
			s += '<option value=' + i + '>' + uW.unitcost['unt' + i][0] + '</option>';
		}
		s += "</select> &nbsp; (" + uW.g_js_strings.commonstr.max + " <span id=ptttSpMax></span>)</td></tr>\
      <TR><TD align=right>" + uW.g_js_strings.modal_barracks_train.numtotrain + ": </td><TD><INPUT id='ptttInpPS' size=5 type='text' value='0'\></td>\
        <TD><INPUT id='ptttButMaxPS' type=submit value='" + uW.g_js_strings.commonstr.max + "'\> &nbsp; (\
        " + uW.g_js_strings.commonstr.max + " <span id=ptttSpMaxPS>0</span>)</td></tr>\
      <TR><TD align=right>" + uW.buildingcost.bdg13[0] + ": </td><TD><INPUT id='ptttInpSlots' size=2 type='text' value='1'\></td>\
        <TD width=75%><INPUT id='ptttButMaxSlots' type=submit value='" + uW.g_js_strings.commonstr.max + "'\> &nbsp;\
        (" + uW.g_js_strings.commonstr.max + " <span id=ptttSpMaxSlots>1</span>)</td></tr>\
      <TR><TD align=right valign=top></td><TD colspan=2><INPUT type=CHECKBOX id=chkPop" + (Options.maxIdlePop ? ' CHECKED ' : '') + "> \
        <SPAN style='white-space:normal;'>" + uW.g_js_strings.commonstr.use + " " + uW.g_js_strings.commonstr.workers + "</span>\
		<br><SELECT id=tutelage>\
		<option value='0'><CENTER>--- " + uW.g_js_strings.commonstr.items + " " + uW.g_js_strings.commonstr.speedup + " ---</center></option>\
		<option value='36'>" + uW.itemlist.i36.name + "</option>\
        <option value='37'>" + uW.itemlist.i37.name + "</option>\
        <option value='38'>" + uW.itemlist.i38.name + "</option>\
		</select>\
		<br><br><SELECT id=pttrgamble>\
		<option value='0'><CENTER>--- " + uW.g_js_strings.commonstr.resources + " " + uW.g_js_strings.commonstr.speedup + " ---</center></option>\
		<option value=1>Use " + t.gamble[1].cost + "x resources (" + t.gamble[1].min + " - " + t.gamble[1].max + "%)</option>\
		<option value=2>Use " + t.gamble[2].cost + "x resources (" + t.gamble[2].min + " - " + t.gamble[2].max + "%)</option>\
		</select>\
		</td></tr>\
		<TR><TD colspan=3 align=center><DIV id=pbTroopTimeEst></div></td></tr>\
      <TR><TD colspan=3 align=center><DIV style='height:10px'></div><INPUT id='ptttButDo' type=submit value='" + uW.g_js_strings.modal_openBarracks.trainttl + "'\
      ></td></tr>\
      </table></td><TD width=20></td><TD style='border-left:solid 2px;' width=50% align=center>\
      <TABLE align=center><TR><TD align=right>" + uW.g_js_strings.modal_openWalls.builddefenses + ": </td><TD colspan=2>\
      <SELECT id=pttdType>\
        <option value='53'>" + uW.fortcost.frt53[0] + "</option>\
        <option value='55'>" + uW.fortcost.frt55[0] + "</option>\
        <option value='60'>" + uW.fortcost.frt60[0] + "</option>\
        <option value='61'>" + uW.fortcost.frt61[0] + "</option>\
        <option value='62'>" + uW.fortcost.frt62[0] + "</option>\
      </select> &nbsp; (<span id=pttdSpMax></span>)</td>\
      <TR><TD align=right>" + uW.g_js_strings.modal_walls_train.numdefbuild + ": </td><TD><INPUT id='pttdInpPS' size=5 type='text' value='0'\></td>\
        <TD><INPUT id='pttdButMaxPS' type=submit value='" + uW.g_js_strings.commonstr.max + "'\> &nbsp; (" + uW.g_js_strings.commonstr.max + "\
         <span id=pttdSpMaxPS>0</span>)</td></tr>\
      <TR><TD align=right>" + uW.g_js_strings.commonstr.space + "(" + uW.buildingcost.bdg19[0] + "): </td>\
      <TD><INPUT id='pttdInpSlots' size=2 type='text' value='1'\></td>\
        <TD width=75%><INPUT id='pttdButMaxSlots' type=submit value='" + uW.g_js_strings.commonstr.max + "'\>&nbsp; (\
        " + uW.g_js_strings.commonstr.max + " <span id=pttdSpMaxSlots>1</span>)</td></tr>\
      <TR align=center><TD colspan=3><SPAN id=pttdSpace></span></td></tr>\
	 <TR><TD align=center colspan=3><INPUT type=CHECKBOX id=chkDoTraps" + (AutoTrainOptions.doTraps[1] ? ' CHECKED ' : '') + ">Max Traps (Min=1 Max=5)</TD></TR>\
   	 <TR><TD align=center colspan=3><INPUT type=CHECKBOX id=chkDoCaltrops" + (AutoTrainOptions.doCalrops[1] ? ' CHECKED ' : '') + ">Max Caltraps (Min=1 Max=5)</TD></TR>\
	 <TR><TD align=center colspan=3><INPUT type=CHECKBOX id=chkDoSpikes" + (AutoTrainOptions.doSpikes[1] ? ' CHECKED ' : '') + ">Max Spikes (Min=1 Max=5)</TD></TR>\
   	 <TR><TD align=center colspan=3><INPUT type=CHECKBOX id=chkDoXbows" + (AutoTrainOptions.doXbows[1] ? ' CHECKED ' : '') + ">Max Xbows (Min=1 Max=5)</TD></TR>\
      <TR><TD colspan=3 align=center><DIV style='height:10px'>\
      <SELECT id=siege>\
      <option value='0'><CENTER>--- " + uW.g_js_strings.commonstr.speedup + " ---</center></option>\
      <option value='26'>" + uW.itemlist.i26.name + "</option>\
      </select></div>\
      <BR><INPUT id='pttdButDo' type=submit value='" + uW.g_js_strings.modal_openWalls.builddefenses + "'\></td></tr></table>\
      </td></tr></table></div></div>\
      <TABLE align=center width=425 class=ptTab><TR><TD><div id=ptTrainStatus style='overflow-y:auto; max-height:78px; height: 78px;'></div></td></tr></table>\
      <div style='height: 330px; background: #e8ffe8'>\
      <TABLE width=100% class=ptTab><TR><TD colspan=3><DIV id=divSTtop></div></td></tr>\
      <TR><TD width=50% style='padding-left:15px; padding-right:15px'><DIV style='text-align:center'>\
      <B>" + uW.g_js_strings.commonstr.troops + " (" + uW.g_js_strings.modal_openBarracks.trainingttl + ")\
        &nbsp; (<SPAN id=statTTtot></span>)</b><BR><HR></div><DIV id=divSTleft style='overflow-y: auto; height:210px; max-height:210px'></div></td>\
        <TD width=50% style='padding-left:15px; padding-right:15px'><DIV style='text-align:center'><B>" + uW.g_js_strings.modal_openWalls.defqueue + "&nbsp; (<SPAN\ id=statDTtot></span>)</b><BR><HR></div><DIV id=divSTright style='overflow-y: auto; height:210px; max-height:210px'></div></td></tr>\
      </div></div>";
		t.cont.innerHTML = s;
		t.clickCitySelect;
		if (document.getElementById('ptttInpPS').value != "")
			t.dispTroopTrainTimes();
		document.getElementById('ptttInpPS').addEventListener('keyup', function () {
			if (document.getElementById('ptttInpPS').value != "") {
				t.dispTroopTrainTimes();
			} else {
				document.getElementById('ptttInpPS').value = "0"
				t.dispTroopTrainTimes();
			}
		});
		document.getElementById('ptttType').addEventListener('change', function () {
			if (document.getElementById('ptttInpPS').value > 0) {
				t.dispTroopTrainTimes();
			}
			t.lastQueString = null;
			t.displayCityStats();
		});
		t.TTspMax = document.getElementById('ptttSpMax');
		t.TTspMaxPS = document.getElementById('ptttSpMaxPS');
		t.TTspMaxSlots = document.getElementById('ptttSpMaxSlots');
		t.TTbutMaxSlots = document.getElementById('ptttButMaxSlots');
		t.TTbutMaxPerSlot = document.getElementById('ptttButMaxPS');
		t.TTinpPerSlot = document.getElementById('ptttInpPS');
		t.TTinpSlots = document.getElementById('ptttInpSlots');
		t.TTselType = document.getElementById('ptttType');
		t.TTbutDo = document.getElementById('ptttButDo');
		t.TDspMax = document.getElementById('pttdSpMax');
		t.TDspMaxPS = document.getElementById('pttdSpMaxPS');
		t.TDspMaxSlots = document.getElementById('pttdSpMaxSlots');
		t.TDbutMaxSlots = document.getElementById('pttdButMaxSlots');
		t.TDbutMaxPerSlot = document.getElementById('pttdButMaxPS');
		t.TDinpPerSlot = document.getElementById('pttdInpPS');
		t.TDinpSlots = document.getElementById('pttdInpSlots');
		t.TDselType = document.getElementById('pttdType');
		t.TDbutDo = document.getElementById('pttdButDo');
		t.TDspSpace = document.getElementById('pttdSpace');
		t.divTrainStatus = document.getElementById('ptTrainStatus');
		t.TTinpSlots.addEventListener('change', t.updateTopTroops, false);
		t.TTbutMaxPerSlot.addEventListener('click', t.clickTroopMaxPS, false);
		t.TTbutMaxSlots.addEventListener('click', t.clickTroopMaxSlots, false);
		t.TTselType.addEventListener('change', t.changeTroopSelect, false);
		t.TTbutDo.addEventListener('click', t.clickTroopDo, false);
		t.TDinpSlots.addEventListener('change', t.updateTopDef, false);
		t.TDselType.addEventListener('change', t.changeDefSelect, false);
		t.TDbutMaxPerSlot.addEventListener('click', t.clickDefMaxPS, false);
		t.TDbutMaxSlots.addEventListener('click', t.clickDefMaxSlots, false);
		t.TDbutDo.addEventListener('click', t.clickDefDo, false);
		var dcp = new CdispCityPicker('ptspeed', document.getElementById('ptspeedcity'), true, t.clickCitySelect, 0);
		document.getElementById('chkPop').addEventListener('change', t.clickCheckIdlePop, false);
		document.getElementById('chkDoTraps').addEventListener('change', t.clickCheckDoTraps, false);
		document.getElementById('chkDoCaltrops').addEventListener('change', t.clickCheckDoCaltrops, false);
		document.getElementById('chkDoSpikes').addEventListener('change', t.clickCheckDoSpikes, false);
		document.getElementById('chkDoXbows').addEventListener('change', t.clickCheckDoXbows, false);
		document.getElementById('pttrgamble').addEventListener('change', t.changeTroopSelect, false);
		document.getElementById('chkPop').addEventListener('change', t.clickCheckIdlePop, false);
		t.changeTroopSelect();
		t.changeDefSelect();
		t.doAutoTrain(1);
	},
	dispTroopTrainTimes: function () {
		var t = Tabs.Train;
		var TroopTypeID = parseInt(document.getElementById('ptttType').value);
		var NumOfTroops = parseInt(document.getElementById('ptttInpPS').value);
		var TroopTime = unsafeWindow.modal_barracks_traintime(TroopTypeID, NumOfTroops);
		var TroopName = unsafeWindow.unitcost['unt' + TroopTypeID][0];
		var TotalTime2x5 = TroopTime * 0.95;
		var TotalTime2x15 = TroopTime * 0.85;
		var TotalTime4x10 = TroopTime * 0.9;
		var TotalTime4x25 = TroopTime * 0.75;
		var TotalTimeLancelot = TroopTime * 0.7;
		var TotalTimeArthur = TroopTime * 0.5;
		var TotalTimeMerlin = TroopTime * 0.3;
		var TotalTTS = unsafeWindow.cm.ThroneController.effectBonus(77);
		var baseTime = t.calcBaseTrainTime(TroopTypeID, NumOfTroops,t.selectedCity.id);
		message = '<TABLE align=center><TR>';
		message += '<TR><TD><B>Base Time NO TR: ' + timestr(baseTime, true) + ' </b></td></tr>';
		message += '<TR><TD>Time with ' + TotalTTS + '% Throne Boost : </td><TD>' + timestr(TroopTime, true) + '</td></tr>';
		message += '<TR><TD>Time with Lancelot\'s : </td><TD>' + timestr(TotalTimeLancelot, true) + ' </td></tr>';
		message += '<TR><TD>Time with Arthur\'s : </td><TD>' + timestr(TotalTimeArthur, true) + ' </td></tr>';
		message += '<TR><TD>Time with Merlin\'s : </td><TD>' + timestr(TotalTimeMerlin, true) + '</td></tr>';
		message += '<TR><TD>Time with 2x Reso : </td><TD>' + timestr(TotalTime2x15, true) + ' - ' + timestr(TotalTime2x5, true) + ' </td></tr>';
		message += '<TR><TD>Time with 4x Reso : </td><TD>' + timestr(TotalTime4x25, true) + ' - ' + timestr(TotalTime4x10, true) + ' </td></tr></table>';
		document.getElementById('pbTroopTimeEst').innerHTML = message;
	},
	calcBaseTrainTime: function (d, f, c) {
		var t = Tabs.Train;
		var cityId = c;
		var uw = unsafeWindow;
		var c = +(uw.unitcost["unt" + d][7]) * f,
			e, k = {},
			h = uw.seed.buildings["city" + uw.currentcityid],
			j = {},
			l = uw.seed.knights["city" + uw.currentcityid],
			a, g = uw.seed.leaders["city" + uw.currentcityid];
		k.barracks = 0;
		k.workshop = 0;
		k.stable = 0;
		k.tech = 0;
		k.knight = 0;
		k.ultimate = 0;
		unsafeWindow.jQuery.each(h, function (n, m) {
			m.id = +(m[0]);
			m.level = +(m[1]);
			if (d < 13 || d == 16) {
				if (m.id === 13 && m.level > 0) {
					k.barracks += (m.level + 9);
				}
			} else if (d == 13) {
				if (m.id === 22 && m.level > 0) {
					k.barracks += (m.level + 9);
				}
			} else if (d == 14) {
				if (m.id === 24 && m.level > 0) {
					k.barracks += (m.level + 9);
				}
			} else if (d == 15) {
				if (m.id === 26 && m.level > 0) {
					k.barracks += (m.level + 9);
				}
			} else {}
			if (m.id === 16 && m.level > 0) {
				if (+(d) >= 9 && +(d) <= 12) {
					k.workshop = m.level;
				}
			}
			if (m.id === 17 && m.level > k.stable) {
				if (+(d) >= 7 && +(d) <= 8) {
					k.stable = m.level;
				}
			}
		});
		e = k.barracks / 10;
		c = Math.max(1, Math.ceil(c / e));
		e = 1;
		if (l) {
			a = l["knt" + g.combatKnightId];
			if (a) {
				k.knight = (+(a.combatBoostExpireUnixtime) - uw.unixtime() > 0) ? (a.combat * 1.25) : a.combat;
			} else {
				k.knight = 0;
			}
		}
		if (uw.seed.tech) {
			//        k.tech = uw.seed.tech.tch5;
			k.tech = parseInt(uw.seed.tech.tch5);
		}
		k.ultimate = k.workshop + k.stable + k.tech;
		e = e * (1 + (0.1 * k.ultimate) + (0.005 * k.knight));
		if (uw.cm.WorldSettings.isOn("GUARDIAN_MARCH_EFFECT")) {
			var b = uw.cm.guardianModalModel.getStoneTrainingSpeedBonus();
			e = e * (1 + b);
		}
		c = Math.max(1, Math.ceil(c / e));
		return c;
	},
	calcTRBoosts: function (StatID) {
		var equipped = Seed.throne.slotEquip[1];
		var total = 0;
		for (var k = 0; k < equipped.length; k++) {
			var item_id = equipped[k];
			var y = unsafeWindow.kocThroneItems[item_id];
			for (var O in y["effects"]) {
				var i = +(O.split("slot")[1]);
				var id = y["effects"]["slot" + i]["id"];
				if (id == StatID) {
					tier = parseInt(y["effects"]["slot" + i]["tier"]);
					level = y["level"];
					p = unsafeWindow.cm.thronestats.tiers[id][tier];
					while (!p && (tier > 0)) {
						tier--;
						p = unsafeWindow.cm.thronestats.tiers[id][tier];
					}
					if (!p) continue; // can't find stats for tier
					if (y["effects"]["slot"+i].fromJewel && (level > unsafeWindow.cm.thronestats.jewelGrowthLimit[y["effects"]["slot"+i].quality])) {
						level = unsafeWindow.cm.thronestats.jewelGrowthLimit[y["effects"]["slot"+i].quality]
					}
					if (i <= y["quality"]) var Percent = p.base + ((level * level + level) * p.growth * 0.5);
					total += Percent;
				}
			}
		}
		return total;
	},
	hide: function () {
		var t = Tabs.Train;
		clearTimeout(t.timer);
	},
	show: function () {
		var t = Tabs.Train;
		clearTimeout(t.timer);
		t.displayCityStats();
		t.changeTroopSelect();
		t.changeDefSelect();
		t.timer = setTimeout(t.show, 2000);
	},
	/*******  TROOPS  ******/
	updateTopTroops: function () {
		var t = Tabs.Train;
		var slots = parseInt(t.TTinpSlots.value, 10);
		if (isNaN(slots) || slots < 0)
			slots = 0;
		t.TTspMax.innerHTML = t.stats.MaxTrain;
		//    t.TTspMaxSlots.innerHTML = t.stats.barracks - t.stats.queued;
		if (t.lastTroopSelect > 12 && t.lastTroopSelect < 16)
			t.TTspMaxSlots.innerHTML = t.stats.barracks - t.stats.spqueued;
		else
			t.TTspMaxSlots.innerHTML = t.stats.barracks - t.stats.queued;
		//    if (slots<1 || (t.stats.barracks-t.stats.queued < 1))
		if (slots < 1 || t.TTspMaxSlots.innerHTML < 1)
			t.TTspMaxPS.innerHTML = 0;
		else
			t.TTspMaxPS.innerHTML = parseInt(t.stats.MaxTrain / slots);
	},
	clickTroopMaxPS: function () {
		var t = Tabs.Train;
		var slots = parseInt(t.TTinpSlots.value, 10);
		var queued;
		if (t.lastTroopSelect > 12 && t.lastTroopSelect < 16)
			queued = t.stats.spqueued;
		else
			queued = t.stats.queued;
		if (slots < 1 || (t.stats.barracks - queued < 1))
			t.TTinpPerSlot.value = 0;
		else
			t.TTinpPerSlot.value = parseInt(t.stats.MaxTrain / slots);
		t.dispTroopTrainTimes();
	},
	clickTroopMaxSlots: function () {
		var t = Tabs.Train;
		if (t.lastTroopSelect > 12 && t.lastTroopSelect < 16)
			t.TTinpSlots.value = t.stats.barracks - t.stats.spqueued;
		else
			t.TTinpSlots.value = t.stats.barracks - t.stats.queued;
	},
	clickCitySelect: function (city) {
		var t = Tabs.Train;
		t.selectedCity = city;
		t.lastQueString = null;
		t.lastDQueString = null;
		t.displayCityStats();
		t.changeTroopSelect();
		t.changeDefSelect();
		t.JumpCity(city.name);
	},
	JumpCity: function (city) {
		var t = Tabs.AllianceList;
		for (i = 0; i < Seed.cities.length; i++) {
			if (Seed.cities[i][1] == city) var cityNum = i;
		}
		cityNum++;
		var obj = document.getElementById('citysel_' + cityNum);
		return t.ClickWin(window, obj, 'click');
	},
	ClickWin: function (win, obj, evtName) {
		var evt = win.document.createEvent("MouseEvents");
		evt.initMouseEvent(evtName, true, true, win,
			0, 0, 0, 0, 0, false, false, false, false, 0, null);
		return !obj.dispatchEvent(evt);
	},
	clickCheckIdlePop: function () {
		var t = Tabs.Train;
		if (document.getElementById('chkPop').checked)
			Options.maxIdlePop = true;
		else
			Options.maxIdlePop = false;
		saveOptions();
		t.displayCityStats();
		t.changeTroopSelect();
	},
	clickCheckDoTraps: function () {
		var t = Tabs.Train;
		var cityNo = Cities.byID[t.selectedCity.id].idx + 1;
		AutoTrainOptions.doTraps[cityNo] = (document.getElementById('chkDoTraps').checked)
		saveAutoTrainOptions();
		t.displayCityStats();
		t.changeDefSelect();
	},
	clickCheckDoCaltrops: function () {
		var t = Tabs.Train;
		var cityNo = Cities.byID[t.selectedCity.id].idx + 1;
		AutoTrainOptions.doCalrops[cityNo] = (document.getElementById('chkDoCaltrops').checked)
		saveAutoTrainOptions();
		t.displayCityStats();
		t.changeDefSelect();
	},
	clickCheckDoSpikes: function () {
		var t = Tabs.Train;
		var cityNo = Cities.byID[t.selectedCity.id].idx + 1;
		AutoTrainOptions.doSpikes[cityNo] = (document.getElementById('chkDoSpikes').checked)
		saveAutoTrainOptions();
		t.displayCityStats();
		t.changeDefSelect();
	},
	clickCheckDoXbows: function () {
		var t = Tabs.Train;
		var cityNo = Cities.byID[t.selectedCity.id].idx + 1;
		AutoTrainOptions.doXbows[cityNo] = (document.getElementById('chkDoXbows').checked)
		saveAutoTrainOptions();
		t.displayCityStats();
		t.changeDefSelect();
	},
	limitingFactor: null,
	changeTroopSelect: function () {
		var t = Tabs.Train;
		var cityId = t.selectedCity.id;
		// unitcost: NAME, Food, Wood, Stone, Ore, Gold, Pop, ?
		var id = t.TTselType.value;
		t.lastTroopSelect = id;
		t.limitingFactor = null;
		var uc = uW.unitcost['unt' + id];
		var actualuc = [];
		for (var r = 1; r < 5; r++) {
			if (document.getElementById('pttrgamble').value > 0)
				actualuc[r] = uc[r] * t.gamble[document.getElementById('pttrgamble').value].cost;
			else
				actualuc[r] = uc[r];
		}
		if (id == 16) actualuc[5] = uc[11]["34001"];
		var max = 9999999999;
		if ((t.stats.food / actualuc[1]) < max) {
			max = t.stats.food / actualuc[1];
			t.limitingFactor = uW.resourceinfo['rec1'];
		}
		if ((t.stats.wood / actualuc[2]) < max) {
			max = t.stats.wood / actualuc[2];
			t.limitingFactor = uW.resourceinfo['rec2'];
		}
		if ((t.stats.stone / actualuc[3]) < max) {
			max = t.stats.stone / actualuc[3];
			t.limitingFactor = uW.resourceinfo['rec3'];
		}
		if ((t.stats.ore / actualuc[4]) < max) {
			max = t.stats.ore / actualuc[4];
			t.limitingFactor = uW.resourceinfo['rec4'];
		}
		if (id == 16)
			if ((t.stats.yew / actualuc[5]) < max) {
				max = t.stats.yew / actualuc[5];
				t.limitingFactor = 'yew';
			}
		if ((t.stats.idlePop / uc[6]) < max) {
			max = t.stats.idlePop / uc[6];
			t.limitingFactor = 'pop';
		}
		t.stats.MaxTrain = parseInt(max);
		if (t.stats.MaxTrain < 0)
			t.stats.MaxTrain = 0;
		if (matTypeof(uc[8]) == 'object') {
			for (k in uc[8]) { // check building requirement
				var isPrestige = getCityPrestige(cityId);
				var b = getCityBuilding(cityId, k.substr(1));
				if (isPrestige) {
					var bid = parseInt(k.substr(1));
					switch (bid) {
					case 17: //Stable
						b.maxLevel = 12;
					case 16: //Workshop
						b.maxLevel = 12;
					case 15: //Blacksmith
						b.maxLevel = 12;
					}
				}
				if (b.maxLevel < uc[8][k][1]) {
					t.stats.MaxTrain = 0;
					t.limitingFactor = null;
					break;
				}
			}
		}
		if (matTypeof(uc[9]) == 'object') {
			for (k in uc[9]) { // check tech requirement
				if (parseInt(Seed.tech['tch' + k.substr(1)]) < uc[9][k][1]) {
					t.stats.MaxTrain = 0;
					t.limitingFactor = null;
					break;
				}
			}
		}
		if (t.lastTroopSelect == 13) {
			var numdruidbarrack = getCityBuilding(cityId, 22).count;
			if (numdruidbarrack == 0) {
				t.stats.MaxTrain = 0;
				t.limitingFactor = null;
			}
		} else if (t.lastTroopSelect == 14) {
			var numfeybarrack = getCityBuilding(cityId, 24).count;
			if (numfeybarrack == 0) {
				t.stats.MaxTrain = 0;
				t.limitingFactor = null;
			}
		} else if (t.lastTroopSelect == 15) {
			var numbritonbarrack = getCityBuilding(cityId, 26).count;
			if (numbritonbarrack == 0) {
				t.stats.MaxTrain = 0;
				t.limitingFactor = null;
			}
		} else if (t.lastTroopSelect > 16) {
			t.stats.MaxTrain = 0;
			t.limitingFactor = null;
		}
		if (t.limitingFactor) {
			document.getElementById('ptttr_' + t.limitingFactor).className = 'boldRed';
			document.getElementById('ptttr2_' + t.limitingFactor).className = 'boldRed';
		}
		t.updateTopTroops();
		if (isPrestige && t.lastTroopSelect > 12 && t.lastTroopSelect < 16)
			t.TTspMaxSlots.innerHTML++;
	},
	clickTroopDo: function () {
		var t = Tabs.Train;
		var cityId = t.selectedCity.id;
		var unitId = t.TTselType.value;
		var perSlot = parseInt(t.TTinpPerSlot.value, 10);
		var numSlots = parseInt(t.TTinpSlots.value, 10);
		var queued;
		if (t.lastTroopSelect > 12 && t.lastTroopSelect < 16)
			queued = t.stats.spqueued;
		else
			queued = t.stats.queued;
		t.displayCityStats();
		if (t.running) {
			t.stopTraining('<SPAN class=boldRed>Training cancelled by user</span>');
			return;
		}
		if (perSlot < 1) {
			t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>' + uW.g_js_strings.commonstr.invalid + ' (' + uW.g_js_strings.modal_barracks_train.numtotrain + ')</font>';
			return;
		}
		if (perSlot * numSlots > t.stats.MaxTrain) {
			t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>Can\'t train that many troops (max is ' + t.stats.MaxTrain + ' total)</font>';
			return;
		}
		if (numSlots < 1 || numSlots > t.stats.barracks - queued) {
			t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>' + uW.g_js_strings.commonstr.invalid + ' (' + uW.buildingcost.bdg13[0] + ')</font>';
			return;
		}
		var tut = document.getElementById('tutelage').value;
		var gamble = document.getElementById('pttrgamble').value;
		t.TDbutDo.disabled = true;
		t.TTbutDo.className = 'ptButCancel';
		t.TTbutDo.value = 'CANCEL';
		var que = [];
		for (var i = 0; i < numSlots; i++)
			que.push(['T', unitId, parseInt(perSlot)]);
		t.divTrainStatus.innerHTML = '';
		t.running = true;
		t.doQueue(cityId, tut, gamble, que);
	},
	/*******  DEF  ******/
	updateTopDef: function () {
		var t = Tabs.Train;
		var slots = parseInt(t.TDinpSlots.value, 10);
		if (isNaN(slots) || slots < 0)
			slots = 0;
		t.TDspMax.innerHTML = uW.g_js_strings.commonstr.max + ':' + t.stats.MaxDefTrain + '&nbsp; ' + uW.g_js_strings.commonstr.owned + ':' + t.stats.defOwned;
		t.TDspMaxSlots.innerHTML = t.stats.wallLevel - t.stats.Dqueued;
		if (slots < 1)
			t.TDspMaxPS.innerHTML = 0;
		else
			t.TDspMaxPS.innerHTML = parseInt(t.stats.MaxDefTrain / slots);
		t.TDspSpace.innerHTML = uW.buildingcost.bdg19[0] + ' (' + uW.g_js_strings.guardian.cl1 + '): <B>' + t.stats.wallLevel + '\
    </b><BR>' + uW.g_js_strings.modal_openWalls.walldef + ': \
    ' + (t.stats.wallSpaceUsed + t.stats.wallSpaceQueued) + '/<B>' + t.stats.wallSpace + '</b><BR>\
        ' + uW.g_js_strings.modal_openWalls.fielddef + ': ' + (t.stats.fieldSpaceUsed + t.stats.fieldSpaceQueued) + '/<B>' + t.stats.fieldSpace + '</b>';
	},
	changeDefSelect: function () {
		var t = Tabs.Train;
		var cityId = t.selectedCity.id;
		// unitcost: NAME, Food, Wood, Stone, Ore, Gold, Pop, ?
		var id = t.TDselType.value;
		t.lastDefSelect = id;
		t.stats.defOwned = parseInt(Seed.fortifications['city' + cityId]['fort' + id]);
		//
		// Check if ascended city
		var isPrestige = Seed.cityData.city[cityId].isPrestigeCity;
		//
		var uc = uW.fortcost['frt' + id];
		var max = 9999999999;
		if ((t.stats.food / uc[1]) < max)
			max = t.stats.food / uc[1];
		if ((t.stats.wood / uc[2]) < max)
			max = t.stats.wood / uc[2];
		if ((t.stats.stone / uc[3]) < max)
			max = t.stats.stone / uc[3];
		if ((t.stats.ore / uc[4]) < max)
			max = t.stats.ore / uc[4];
		if ((t.stats.idlePop / uc[6]) < max)
			max = t.stats.idlePop / uc[6];
		t.stats.MaxDefTrain = parseIntNan(max);
		if (t.stats.MaxDefTrain < 0)
			t.stats.MaxDefTrain = 0;
		if (matTypeof(uc[8]) == 'object') {
			for (k in uc[8]) { // check building requirement
				var b = getCityBuilding(cityId, k.substr(1));
				if (isPrestige) {
					var bid = parseInt(k.substr(1));
					logit(bid);
					switch (bid) {
					case 17: //Stable
						b.maxLevel = 12;
					case 16: //Workshop
						b.maxLevel = 12;
					case 15: //Blacksmith
						b.maxLevel = 12;
					}
				}
				logit(isPrestige);
				logit(inspect(b, 3, 1));
				if (b.maxLevel < uc[8][k][1]) {
					t.stats.MaxDefTrain = 0;
					break;
				}
			}
		}
		if (matTypeof(uc[9]) == 'object') {
			for (k in uc[9]) { // check tech requirement
				if (parseInt(Seed.tech['tch' + k.substr(1)]) < uc[9][k][1]) {
					t.stats.MaxDefTrain = 0;
					break;
				}
			}
		}
		var spaceEach = parseInt(uW.fortstats["unt" + id][5]);
		if (id < 60)
			var spaceAvail = t.stats.wallSpace - t.stats.wallSpaceUsed - t.stats.wallSpaceQueued;
		else
			var spaceAvail = t.stats.fieldSpace - t.stats.fieldSpaceUsed - t.stats.fieldSpaceQueued;
		if (t.stats.MaxDefTrain * spaceEach > spaceAvail)
			t.stats.MaxDefTrain = parseInt(spaceAvail / spaceEach);
		t.updateTopDef();
	},
	clickDefMaxPS: function () {
		var t = Tabs.Train;
		var slots = parseInt(t.TDinpSlots.value, 10);
		if (slots < 1)
			t.TDinpPerSlot.value = 0;
		else
			t.TDinpPerSlot.value = parseInt(t.stats.MaxDefTrain / slots);
	},
	clickDefMaxSlots: function () {
		var t = Tabs.Train;
		t.TDinpSlots.value = t.stats.wallLevel - t.stats.Dqueued;
	},
	clickDefDo: function () {
		var t = Tabs.Train;
		var cityId = t.selectedCity.id;
		var unitId = t.TDselType.value;
		var perSlot = parseInt(t.TDinpPerSlot.value, 10);
		var numSlots = parseInt(t.TDinpSlots.value, 10);
		t.displayCityStats();
		if (t.running) {
			t.stopTraining('<SPAN class=boldRed>' + uW.g_js_strings.commonstr.cancelled + '</span>');
			return;
		}
		if (perSlot < 1) {
			//t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>Number of units per slot must be greater than 0.</font>';
			return;
		}
		if (perSlot * numSlots > t.stats.MaxDefTrain) {
			t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>' + uW.g_js_strings.modal_attack.maxtroops + ': ' + t.stats.MaxDefTrain + '</font>';
			return;
		}
		if (numSlots < 1 || numSlots > t.stats.wallLevel - t.stats.Dqueued) {
			t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>' + uW.g_js_strings.commonstr.invalid + ' ()</font>';
			return;
		}
		var siege = document.getElementById('siege').value;
		t.TTbutDo.disabled = true;
		t.TDbutDo.className = 'ptButCancel';
		t.TDbutDo.value = 'CANCEL';
		var que = [];
		for (var i = 0; i < numSlots; i++)
			que.push(['T', unitId, parseInt(perSlot)]);
		t.divTrainStatus.innerHTML = '';
		t.running = true;
		t.doDefQueue(cityId, siege, que);
	},
	doDefQueue: function (cityId, siege, que, errMsg) {
		var t = Tabs.Train;
		clearTimeout(t.trainTimer);
		try {
			t.displayCityStats();
			if (errMsg) {
				t.stopTraining('<SPAN class=boldRed>ERROR: ' + errMsg + '</span>');
				return;
			}
			var cmd = que.shift();
			if (!cmd) {
				t.stopTraining('<B>Done queueing defenses.</b>');
				return;
			}
			if (cmd[0] == 'T') {
				t.dispTrainStatus('Training ' + cmd[2] + ' ' + fortNamesShort[cmd[1]] + ' at ' + Cities.byID[cityId].name + ' (' + que.length + ' slots remaining)<BR>');
				doDefTrain(cityId, siege, cmd[1], cmd[2],
					function (errMsg) {
						t.trainTimer = setTimeout(function () {
							Tabs.Train.doDefQueue(cityId, siege, que, errMsg);
						}, (Math.random() * 3500) + 1500);
					});
			}
		} catch (err) {
			logit(inspect(err, 8, 1));
			t.stopTraining('<SPAN class=boldRed>PROGRAM ERROR: ' + err.message + '</span>');
		}
	},
	// fix KofC bugs ....
	// if first start time > now, make it now
	// if any end time != next start time, fix it
	fixQueTimes: function (q) {
		var now = unixTime();
		if (q[0][2] > now)
			q[0][2] = now;
		for (var i = 0; i < q.length; i++) {
			if (q[i + 1] != null && q[i + 1][2] != q[i][3])
				q[i][3] = q[i + 1][2];
		}
	},
	expireTheQueue: function (q) {
		if (q == null)
			return;
		var now = unixTime();
		while (q.length > 0 && (q[0][3] - now) < 1)
			q.shift();
	},
	displayCityStats: function () {
		var t = Tabs.Train;
		var cityId = t.selectedCity.id;
		var isSpecial = false;
		if (t.TTselType.value > 12 && t.TTselType.value < 16) {
			isSpecial = true;
		}
		t.stats.food = parseInt(Seed.resources['city' + cityId].rec1[0] / 3600);
		t.stats.wood = parseInt(Seed.resources['city' + cityId].rec2[0] / 3600);
		t.stats.stone = parseInt(Seed.resources['city' + cityId].rec3[0] / 3600);
		t.stats.ore = parseInt(Seed.resources['city' + cityId].rec4[0] / 3600);
		t.stats.yew = parseInt(Seed.items.i34001);
		t.stats.gold = Seed.citystats['city' + cityId].gold[0];
		if (Options.maxIdlePop)
			t.stats.idlePop = parseInt(Seed.citystats['city' + cityId].pop[0]);
		else
			t.stats.idlePop = parseInt(Seed.citystats['city' + cityId].pop[0]) - parseInt(Seed.citystats['city' + cityId].pop[3]);
		t.stats.barracks = (isSpecial) ? (getCityBuilding(cityId, 22).count + getCityBuilding(cityId, 24).count + getCityBuilding(cityId, 26).count) : getCityBuilding(cityId, 13).count;
		var m = '<CENTER><B>' + Cities.byID[cityId].name + ' &nbsp; (' + Cities.byID[cityId].x + ',' + Cities.byID[cityId].y + ')</b></center><HR>';
		m += '<TABLE class=ptTab width=100%><TR align=center>';
		for (i = 1; i <= 10; i++) {
			j=i+10;
			if (j > 18) j=j+2;
			m += '<TR><TD width=75px>' + uW.unitcost['unt' + i][0] + '</td><TD width=60px>' + addCommas(parseInt(Seed.units['city' + cityId]['unt' + i])) + '</td>';
			m += '<TD width=75px>' + uW.unitcost['unt' + j][0] + '</td><TD width=60px>' + addCommas(parseInt(Seed.units['city' + cityId]['unt' + j])) + '</td>';
			if (i <= 4) m += '<TD width=75px><SPAN id=ptttr_' + uW.resourceinfo['rec' + i] + '>' + uW.resourceinfo['rec' + i] + '</span></td><TD width=60px><SPAN id=ptttr2_' + uW.resourceinfo['rec' + i] + '>' + addCommas(parseInt(Seed.resources['city' + cityId]['rec' + i][0] / 3600)) + '</span></td>';
			if (i == 5) m += '<TD width=75px><SPAN id=ptttr_gold>' + uW.resourceinfo['rec0'] + '</span></td><TD width=60px><SPAN id=ptttr2_gold>' + addCommas(Seed.citystats['city' + cityId].gold[0]) + '</span></td>';
			if (i == 6) m += '<TD width=75px><SPAN id=ptttr_pop>Available Population</td><TD width=60px><SPAN id=ptttr2_pop>' + addCommas(t.stats.idlePop) + '</td>';
			if (i == 7) m += '<TD width=75px><SPAN id=ptttr_yew>Pristine Yew Branch</td><TD width=60px><SPAN id=ptttr2_yew>' + addCommas(t.stats.yew) + '</td>';
			if (i > 7) m += '<TD width=75px></td><TD width=60px></td>';
			m += '</tr>';
		}
		m += '</table>';
		document.getElementById('divSTtop').innerHTML = m;
		// troop queue .... 
		var totTime = 0;
		var q = Seed.queue_unt['city' + cityId];
		t.expireTheQueue(q);
		var qs = q.toString();
		var now = unixTime();
		// if (q!=null && q.length>0)
		// totTime = q[q.length-1][3] - now;
		if (qs == t.lastQueString) {
			if (q != null && q.length > 0) {
				var cur = q[0][3] - now;
				//		var cur = 0;
				for (var i = 0; i < q.length; i++) {
					if (q[i][7] && isSpecial) {
						cur = q[i][3] - now;
						break;
					}
					if (!q[i][7] && isSpecial) {
						cur = q[i][3] - now;
						break;
					}
				}
				if (document.getElementById('ptttfq'))
					document.getElementById('ptttfq').innerHTML = timestr(cur, true);
			}
		} else {
			t.lastQueString = qs;
			t.stats.queued = 0;
			t.stats.spqueued = 0;
			m = '<TABLE align=center class=ptTab>';
			if (q != null && q.length > 0) {
				if (!getCityPrestige(cityId))
					t.fixQueTimes(q);
				// t.stats.queued = q.length;
				first = true;
				first_special = true;
				for (var i = 0; i < q.length; i++) {
					var now = unixTime();
					//	  if(isSpecial && q[i][0] < 13){
					// 		continue;
					//	  }
					// 	  if(!isSpecial && q[i][0] >= 13){
					// 		continue;
					// 	  }
					start = q[i][2];
					end = q[i][3];
					if (end > totTime)
						totTime = end;
					// 	if (first)
					//          if (first || (q[i][7] && first_special))
					if (first || first_special)
						actual = end - now;
					else
						actual = end - lastEnd;
					if (actual < 0)
						actual = 0;
					q[i][6] = cityId;
					//q[i][7] If true means special troop training
					m += '<TR align=right><TD width="5px"><A><DIV onclick="cancelTrain(' + q[i][0] + ',' + q[i][1] + ',' + q[i][2] + ',' + q[i][3] + ',' + q[i][5] + ',' + q[i][6] + ',' + i + ')">X</div></a></td>';
					m += '<TD>' + q[i][1] + ' </td><TD align=left> ' + uW.unitcost['unt' + q[i][0]][0];
					//          if (first)
					//          if (first || (q[i][7] && first_special))
					if (first || first_special)
						m += '</td><TD> &nbsp; ' + timestr(end - start, true) + '</td><TD> (<SPAN id=ptttfq>' + timestr(actual, true) + '</span>)';
					else
						m += '</td><TD> &nbsp; ' + timestr(actual, true) + '</td></tr>';
					lastEnd = end;
					if (first && !q[i][7])
						first = false;
					//	  if(q[i][7])
					//	    first_special = false;
					//	  t.stats.queued++;
					if (q[i][7]) {
						first_special = false;
						t.stats.spqueued++;
					} else {
						t.stats.queued++;
					}
				}
			}
			m += '</table>';
			document.getElementById('divSTleft').innerHTML = m;
			t.totTime = totTime;
		}
		//    m = t.stats.queued +' ' + uW.g_js_strings.commonstr.oftx +' ';
		//    if (t.stats.queued >= 0)
		t.stats.qtotal = t.stats.queued + t.stats.spqueued;
		m = t.stats.qtotal + ' ' + uW.g_js_strings.commonstr.oftx + ' ';
		if (t.stats.qtotal >= 0)
			m += t.stats.barracks;
		//    if (totTime > 0)
		//      m += ' - '+ uW.g_js_strings.commonstr.time + ': '+ uW.timestr(totTime);
		if ((t.totTime - now) > 0)
			m += ' - ' + uW.g_js_strings.commonstr.time + ': ' + uW.timestr(t.totTime - now);
		document.getElementById('statTTtot').innerHTML = m;
		// defense queue ....
		getWallInfo(cityId, t.stats);
		var totTime = 0;
		var q = Seed.queue_fort['city' + cityId];
		t.expireTheQueue(q);
		var qs = q.toString();
		if (q != null && q.length > 0)
			totTime = q[q.length - 1][3] - now;
		if (qs == t.lastDQueString) {
			if (q != null && q.length > 0) {
				var cur = q[0][3] - now;
				document.getElementById('pttdfq').innerHTML = timestr(cur, true);
			}
		} else {
			t.lastDQueString = qs;
			t.stats.Dqueued = 0;
			t.stats.wallSpaceQueued = 0;
			t.stats.fieldSpaceQueued = 0;
			m = '<TABLE align=center class=ptTab>';
			if (q != null && q.length > 0) {
				t.fixQueTimes(q);
				t.stats.Dqueued = q.length;
				first = true;
				for (i = 0; i < q.length; i++) {
					if (q[i][0] < 60)
						t.stats.wallSpaceQueued += parseInt(uW.fortstats["unt" + q[i][0]][5]) * parseInt(q[i][1]);
					else
						t.stats.fieldSpaceQueued += parseInt(uW.fortstats["unt" + q[i][0]][5]) * parseInt(q[i][1]);
					start = q[i][2];
					end = q[i][3];
					if (first)
						actual = end - now;
					else
						actual = end - lastEnd;
					if (actual < 0)
						actual = 0;
					q[i][7] = cityId;
					m += '<TR align=right><TD width="5px"><A><DIV onclick="cancelFort(' + q[i][0] + ',' + q[i][1] + ',' + q[i][2] + ',' + q[i][3] + ',' + q[i][5] + ',' + q[i][6] + ',' + q[i][7] + ',' + i + ')">X</div></a></td>'
					m += '<TD>' + q[i][1] + ' </td><TD align=left> ' + fortNamesShort[q[i][0]];
					if (first)
						m += '</td><TD> &nbsp; ' + timestr(end - start, true) + '</td><TD> (<SPAN id=pttdfq>' + timestr(actual, true) + '</span>)';
					else
						m += '</td><TD> &nbsp; ' + timestr(actual, true) + '</td></tr>';
					lastEnd = end;
					first = false;
				}
			}
			m += '</table>';
			document.getElementById('divSTright').innerHTML = m;
		}
		m = t.stats.Dqueued + ' slots';
		if (totTime > 0)
			m += ', ' + uW.timestr(totTime);
		document.getElementById('statDTtot').innerHTML = m;
	},
	dispTrainStatus: function (msg) {
		var t = Tabs.Train;
		t.divTrainStatus.innerHTML = msg + t.divTrainStatus.innerHTML;
	},
	butcancelTrain: function (typetrn, numtrptrn, trnTmp, trnETA, trnNeeded, cityId, trainingId) {
		var t = Tabs.Train;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.pf = 0;
		params.requestType = "CANCEL_TRAINING";
		params.cityId = cityId;
		params.typetrn = typetrn;
		params.numtrptrn = numtrptrn;
		params.trnETA = trnETA;
		params.trnTmp = trnTmp;
		params.trnNeeded = trnNeeded;
		new AjaxRequest(uW.g_ajaxpath + "ajax/cancelTraining.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (message) {
				var rslt = eval("(" + message.responseText + ")");
				if (rslt.updateSeed)
					unsafeWindow.update_seed(rslt.updateSeed);
				if (rslt.ok) {
					var k = 0;
					for (var j = 0; j < Seed.queue_unt["city" + cityId].length; j++) {
						if (j > trainingId) {
							Seed.queue_unt["city" + cityId][j][2] = parseInt(rslt.dateTraining[k]["start"]);
							Seed.queue_unt["city" + cityId][j][3] = parseInt(rslt.dateTraining[k]["end"]);
							k++;
						}
					}
					Seed.queue_unt["city" + cityId].splice(trainingId, 1);
					for (var i = 1; i < 5; i++) {
						var totalReturn = parseInt(uW.unitcost["unt" + typetrn][i]) * parseInt(numtrptrn) * 3600 / 2;
						Seed.resources["city" + cityId]["rec" + i][0] = parseInt(Seed.resources["city" + cityId]["rec" + i][0]) + totalReturn;
					}
				}
			},
			onFailure: function () {},
		});
	},
	butcancelFort: function (typefrt, numtrpfrt, frtTmp, frtETA, frtNeeded, frtid, cityId, queueId) {
		var t = Tabs.Train;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.pf = 0;
		params.requestType = "CANCEL_FORTIFICATIONS";
		params.cityId = cityId;
		params.typefrt = typefrt;
		params.numtrpfrt = numtrpfrt;
		params.frtETA = frtETA;
		params.frtTmp = frtTmp;
		params.frtNeeded = frtNeeded;
		params.frtid = frtid;
		new AjaxRequest(uW.g_ajaxpath + "ajax/cancelFortifications.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (message) {
				if (rslt.updateSeed)
					unsafeWindow.update_seed(rslt.updateSeed);
				var rslt = eval("(" + message.responseText + ")");
				if (rslt.ok) {
					var k = 0;
					for (var j = 0; j < Seed.queue_fort["city" + cityId].length; j++) {
						if (j > queueId) {
							Seed.queue_fort["city" + cityId][j][2] = parseInt(rslt.dateFortifications[k]["start"]);
							Seed.queue_fort["city" + cityId][j][3] = parseInt(rslt.dateFortifications[k]["end"]);
							k++;
						}
					}
					uW.update_seed(rslt.updateSeed);
					Seed.queue_fort["city" + cityId].splice(queueId, 1);
					for (var i = 1; i < 5; i++) {
						Seed.resources["city" + cityId]["rec" + i][0] = parseInt(Seed.resources["city" + cityId]["rec" + i][0]) + totalReturn;
					}
				}
			},
			onFailure: function () {},
		});
	},
	stopTraining: function (msg) {
		var t = Tabs.Train;
		clearTimeout(t.trainTimer);
		t.trainTimer = null;
		t.dispTrainStatus(msg + '<BR>');
		t.TDbutDo.disabled = false;
		t.TTbutDo.disabled = false;
		t.TTbutDo.value = uW.g_js_strings.modal_openBarracks.trainttl;
		t.TDbutDo.value = uW.g_js_strings.modal_openWalls.builddefenses;
		t.TTbutDo.className = '';
		t.TDbutDo.className = '';
		t.running = false;
	},
	doQueue: function (cityId, tut, gamble, que, errMsg) {
		var t = Tabs.Train;
		clearTimeout(t.trainTimer);
		try {
			t.displayCityStats();
			if (errMsg) {
				t.stopTraining('<SPAN class=boldRed>' + errMsg + '</span>');
				return;
			}
			var cmd = que.shift();
			if (!cmd) {
				t.stopTraining('<B>' + uW.g_js_strings.update_queue.troopqueue + '</b>');
				return;
			}
			if (cmd[0] == 'T') {
				t.dispTrainStatus(uW.g_js_strings.modal_barracks_train.starttraining + ': ' + cmd[2] + ' ' + uW.unitcost['unt' + cmd[1]][0] + ' at ' + Cities.byID[cityId].name + ' (' + que.length + ' slots remaining)<BR>');
				doTrain(cityId, tut, gamble, cmd[1], cmd[2],
					function (errMsg) {
						if (t.running)
							t.trainTimer = setTimeout(function () {
								Tabs.Train.doQueue(cityId, tut, gamble, que, errMsg);
							}, (Math.random() * 2500) + 1000);
					}
				);
			}
		} catch (err) {
			logit(inspect(err, 8, 1));
			t.stopTraining('<SPAN class=boldRed>' + uW.g_js_strings.barbarian.erroroccured + ' ' + err.message + '</span>');
		}
	},
	doAutoTraps: function (cityNo) {
		var t = Tabs.Train;
		wall = {};
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city' + cityId;
		getWallInfo(cityId, wall);
		availableSpace = wall.fieldSpace - wall.fieldSpaceUsed;
		if (availableSpace > 0 && wall.slotsBusy < 3) {
			var food = parseInt(Seed.resources['city' + cityId].rec1[0] / 3600);
			var wood = parseInt(Seed.resources['city' + cityId].rec2[0] / 3600);
			var stone = parseInt(Seed.resources['city' + cityId].rec3[0] / 3600);
			var ore = parseInt(Seed.resources['city' + cityId].rec4[0] / 3600);
			availableSlots = 3 - wall.slotsBusy;
			var foodRes = AutoTrainOptions.keepFood[cityNo];
			var woodRes = AutoTrainOptions.keepWood[cityNo];
			var stoneRes = AutoTrainOptions.keepStone[cityNo];
			var oreRes = AutoTrainOptions.keepOre[cityNo];
			var availFood = food - foodRes;
			var availWood = wood - woodRes;
			var availStone = stone - stoneRes;
			var availOre = ore - oreRes;
			secsPerTrap = Cities.byID[cityId]['Def60Time'];
			if (secsPerTrap > 0 && availableSpace > 2 && availableSlots > 0) {
				if (availFood > 400 && availWood > 800 & availStone > 200 & availOre > 400) {
					var numberToTrain = 9999999999;
					if ((availFood / 400) < numberToTrain)
						numberToTrain = parseInt(availFood / 400);
					if ((availWood / 800) < numberToTrain)
						numberToTrain = parseInt(availWood / 800);
					if ((availStone / 200) < numberToTrain)
						numberToTrain = parseInt(availStone / 200);
					if ((availOre / 400) < numberToTrain)
						numberToTrain = parseInt(availOre / 400);
					if (numberToTrain > 5)
						numberToTrain = 5;
					if (wall.Trap + wall.TrapTraining < 10 || availableSpace < 15) {
						numberToTrain = 1;
						actionLog('Building 1 Trap in city ' + Cities.byID[cityId].name);
					} else
						actionLog('Building ' + numberToTrain + ' Traps in city ' + Cities.byID[cityId].name);
					try {
						doDefTrain(cityId, 60, numberToTrain);
					} catch (err) {
						logit(inspect(err, 8, 1));
					}
				}
			}
		}
	},
	doAutoCaltrops: function (cityNo) {
		var t = Tabs.Train;
		wall = {};
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city' + cityId;
		getWallInfo(cityId, wall);
		availableSpace = wall.fieldSpace - wall.fieldSpaceUsed;
		if (availableSpace > 0 && wall.slotsBusy < 3) {
			var food = parseInt(Seed.resources['city' + cityId].rec1[0] / 3600);
			var wood = parseInt(Seed.resources['city' + cityId].rec2[0] / 3600);
			var stone = parseInt(Seed.resources['city' + cityId].rec3[0] / 3600);
			var ore = parseInt(Seed.resources['city' + cityId].rec4[0] / 3600);
			availableSlots = 3 - wall.slotsBusy;
			var foodRes = AutoTrainOptions.keepFood[cityNo];
			var woodRes = AutoTrainOptions.keepWood[cityNo];
			var stoneRes = AutoTrainOptions.keepStone[cityNo];
			var oreRes = AutoTrainOptions.keepOre[cityNo];
			var availFood = food - foodRes;
			var availWood = wood - woodRes;
			var availStone = stone - stoneRes;
			var availOre = ore - oreRes;
			secsPerCaltrop = Cities.byID[cityId]['Def61Time'];
			if (secsPerCaltrop > 0 && availableSpace > 2 && availableSlots > 0) {
				if (availFood > 100 && availWood > 400) {
					var numberToTrain = 9999999999;
					if ((availFood / 100) < numberToTrain)
						numberToTrain = parseInt(availFood / 100);
					if ((availWood / 400) < numberToTrain)
						numberToTrain = parseInt(availWood / 400);
					if (numberToTrain > 5)
						numberToTrain = 5;
					if (wall.Caltrops + wall.CaltropsTraining < 10 || availableSpace < 15) {
						numberToTrain = 1;
						actionLog('Building 1 Caltrop in city ' + Cities.byID[cityId].name);
					} else
						actionLog('Building ' + numberToTrain + ' Caltrops in city ' + Cities.byID[cityId].name);
					try {
						doDefTrain(cityId, 61, numberToTrain);
					} catch (err) {
						logit(inspect(err, 8, 1));
					}
				}
			}
		}
	},
	doAutoSpikes: function (cityNo) {
		var t = Tabs.Train;
		wall = {};
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city' + cityId;
		getWallInfo(cityId, wall);
		availableSpace = wall.fieldSpace - wall.fieldSpaceUsed;
		if (availableSpace > 0 && wall.slotsBusy < 3) {
			var food = parseInt(Seed.resources['city' + cityId].rec1[0] / 3600);
			var wood = parseInt(Seed.resources['city' + cityId].rec2[0] / 3600);
			var stone = parseInt(Seed.resources['city' + cityId].rec3[0] / 3600);
			var ore = parseInt(Seed.resources['city' + cityId].rec4[0] / 3600);
			availableSlots = 3 - wall.slotsBusy;
			var foodRes = AutoTrainOptions.keepFood[cityNo];
			var woodRes = AutoTrainOptions.keepWood[cityNo];
			var stoneRes = AutoTrainOptions.keepStone[cityNo];
			var oreRes = AutoTrainOptions.keepOre[cityNo];
			var availFood = food - foodRes;
			var availWood = wood - woodRes;
			var availStone = stone - stoneRes;
			var availOre = ore - oreRes;
			secsPerSpike = Cities.byID[cityId]['Def62Time'];
			if (secsPerSpike > 0 && availableSpace > 2 && availableSlots > 0) {
				if (availFood > 150 && availWood > 750 & availStone > 50) {
					var numberToTrain = 9999999999;
					if ((availFood / 150) < numberToTrain)
						numberToTrain = parseInt(availFood / 150);
					if ((availWood / 750) < numberToTrain)
						numberToTrain = parseInt(availWood / 750);
					if ((availStone / 50) < numberToTrain)
						numberToTrain = parseInt(availStone / 50);
					if (numberToTrain > 5)
						numberToTrain = 5;
					if (wall.SpikedBarrier + wall.SpikedBarrierTraining < 10 || availableSpace < 15) {
						numberToTrain = 1;
						actionLog('Building 1 Spike in city ' + Cities.byID[cityId].name);
					} else
						actionLog('Building ' + numberToTrain + ' Spikes in city ' + Cities.byID[cityId].name);
					try {
						doDefTrain(cityId, 61, numberToTrain);
					} catch (err) {
						logit(inspect(err, 8, 1));
					}
				}
			}
		}
	},
	doAutoCrossbows: function (cityNo) {
		var t = Tabs.Train;
		wall = {};
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city' + cityId;
		getWallInfo(cityId, wall);
		availableSpace = wall.wallSpace - wall.wallSpaceUsed;
		if (availableSpace > 0 && wall.slotsBusy < 2) {
			var food = parseInt(Seed.resources['city' + cityId].rec1[0] / 3600);
			var wood = parseInt(Seed.resources['city' + cityId].rec2[0] / 3600);
			var stone = parseInt(Seed.resources['city' + cityId].rec3[0] / 3600);
			var ore = parseInt(Seed.resources['city' + cityId].rec4[0] / 3600);
			availableSlots = 2 - wall.slotsBusy;
			var foodRes = AutoTrainOptions.keepFood[cityNo];
			var woodRes = AutoTrainOptions.keepWood[cityNo];
			var stoneRes = AutoTrainOptions.keepStone[cityNo];
			var oreRes = AutoTrainOptions.keepOre[cityNo];
			var availFood = food - foodRes;
			var availWood = wood - woodRes;
			var availStone = stone - stoneRes;
			var availOre = ore - oreRes;
			secsPerXbow = Cities.byID[cityId]['Def53Time'];
			if (secsPerXbow > 0 && availableSpace > 2 && availableSlots > 0) {
				if (availFood > 250 && availWood > 2000 & availStone > 750 & availOre > 500) {
					var numberToTrain = 9999999999;
					if ((availFood / 250) < numberToTrain)
						numberToTrain = parseInt(availFood / 250);
					if ((availWood / 2000) < numberToTrain)
						numberToTrain = parseInt(availWood / 2000);
					if ((availStone / 750) < numberToTrain)
						numberToTrain = parseInt(availStone / 750);
					if ((availOre / 500) < numberToTrain)
						numberToTrain = parseInt(availOre / 500);
					if (numberToTrain > 5)
						numberToTrain = 5;
					if (wall.Crossbows + wall.CrossbowsTraining < 10 || availableSpace < 15) {
						numberToTrain = 1;
						actionLog('Building 1 Crossbow in city ' + Cities.byID[cityId].name);
					} else
						actionLog('Building ' + numberToTrain + ' Crossbows in city ' + Cities.byID[cityId].name);
					try {
						doDefTrain(cityId, 53, numberToTrain);
					} catch (err) {
						logit(inspect(err, 8, 1));
					}
				}
			}
		}
	},
	doAutoTrain: function (cityNo) {
		var t = Tabs.Train;
		clearTimeout(t.nextAuto);
		var cityId = Cities.cities[cityNo - 1].id
		var cityID = 'city' + cityId;
		var troopType = AutoTrainOptions.troopType[cityNo];
		if (troopType > 0) {
			var unitQ = Seed.queue_unt['city' + cityId];
			var queued = 0;
			if (unitQ != null && unitQ.length > 0)
				queued = unitQ.length;
			var slots = Cities.byID[cityId].numBarracks - queued;
			secsPerTroop = Cities.byID[cityId]['Troop' + troopType + 'Time'];
			if (slots > 0 && secsPerTroop > 0)
				t.doAutoTroopTrain(cityNo);
		}
		if (AutoTrainOptions.doTraps[cityNo])
			t.doAutoTraps(cityNo);
		if (AutoTrainOptions.doCalrops[cityNo])
			t.doAutoCaltrops(cityNo);
		if (AutoTrainOptions.doSpikes[cityNo])
			t.doAutoSpikes(cityNo);
		if (AutoTrainOptions.doXbows[cityNo])
			t.doAutoCrossbows(cityNo);
		if (cityNo == Cities.numCities)
			t.nextAuto = setTimeout(function () {
				t.doAutoTrain(1);
			}, (AutoTrainOptions.intervalSecs * 1000));
		else
			t.nextAuto = setTimeout(function () {
				t.doAutoTrain(cityNo + 1);
			}, 7000);
	},
}
/*************************************** OVERVIEW TAB ************************************************/
var GMTclock = {
	span: null,
	timer: null,
	init: function () {
		this.span = document.createElement('span');
		this.span.style.fontWeight = 'bold';
		document.getElementById('kochead_time').parentNode.appendChild(this.span);
		this.setEnable(Options.gmtClock);
	},
	setEnable: function (tf) {
		var t = GMTclock;
		if (tf) {
			setTimeout(function () {
				t.everySecond();
			}, 1000);
		} else {
			t.span.innerHTML = '';
		}
	},
	everySecond: function () {
		var t = GMTclock;
		var now = new Date();
		now.setTime(now.getTime() + (now.getTimezoneOffset() * 60000));
		GMTclock.span.innerHTML = ' &nbsp; (' + now.toLocaleFormat('%H:%M') + ')';
		if (Options.gmtClock) {
			setTimeout(function () {
				t.everySecond();
			}, 1000);
		} else {
			GMTclock.span.innerHTML = '';
		}
	},
}

function getResourceProduction(cityId) {
	var ret = [0, 0, 0, 0, 0];
	var now = unixTime();
	var search = 'type==10 || type==11';
	var wilds = [0, 0, 0, 0, 0];
	var w = Seed.wilderness["city" + cityId];
	for (var k in w) {
		var type = parseInt(w[k].tileType);
		if (type == 10 || type == 11)
			wilds[1] += parseInt(w[k].tileLevel);
		else
			wilds[type / 10] += parseInt(w[k].tileLevel);
	}
	knight = 0;
	var s = Seed.knights["city" + cityId];
	if (s) {
		s = s["knt" + Seed.leaders["city" + cityId].resourcefulnessKnightId];
		if (s) {
			var knight = parseInt(s.resourcefulness);
			if (s.resourcefulnessBoostExpireUnixtime > now)
				knight *= 1.25;
		}
	}
	var workerFactor = 1;
	var c = parseInt(Seed.citystats["city" + cityId]["pop"][0]); // Current  population
	var w = parseInt(Seed.citystats["city" + cityId]["pop"][3]); // Labor force
	if (w > c)
		workerFactor = c / w;
	for (var i = 1; i < 5; i++) {
		var usage = Seed.resources["city" + cityId]["rec" + i];
		var items = 0;
		if (parseInt(Seed.playerEffects["r" + i + "BstExp"]) > now) {
			items = 0.25;
		}
		var tech = Seed.tech["tch" + i];
		ret[i] = parseInt((usage[2] * (1 + tech / 10 + knight / 100 + items + 0.05 * wilds[i]) * workerFactor + 100));
	}
	return ret;
}

function getWallInfo(cityId, objOut) {
	objOut.wallSpaceUsed = 0;
	objOut.fieldSpaceUsed = 0;
	objOut.wallLevel = 0;
	objOut.wallSpace = 0;
	objOut.fieldSpace = 0;
	var b = Seed.buildings["city" + cityId];
	if (b.pos1 == null)
		return;
	objOut.wallLevel = parseInt(b.pos1[1]);
	var spots = 0;
	for (var i = 1; i < (objOut.wallLevel + 1); i++)
		spots += (i * 1500);
	objOut.wallSpace = spots;
	objOut.fieldSpace = spots;
	var fort = Seed.fortifications["city" + cityId];
	for (k in fort) {
		var id = parseInt(k.substr(4));
		if (id < 60)
			objOut.wallSpaceUsed += parseInt(uW.fortstats["unt" + id][5]) * parseInt(fort[k]);
		else
			objOut.fieldSpaceUsed += parseInt(uW.fortstats["unt" + id][5]) * parseInt(fort[k]);
	}
}
Tabs.OverView = {
	tabOrder: 1,
	tabLabel: uW.g_js_strings.commonstr.overview,
	cont: null,
	displayTimer: null,
	curTabBut: null,
	curTabName: null,
	resTotal: {},
	troopTotal: {},
	init: function (div) {
		var t = Tabs.OverView;
		dt = new Date();
		dt.setTime(Seed.player.datejoinUnixTime * 1000);
		t.cont = div;
		var main = '<DIV class=ptstat style="margin-top:5px; margin-bottom:5px;"><TABLE cellspacing=0 cellpadding=0 class=ptTab width=97% align=center>';
		main += '<TR align=left><TD><SPAN class=ptStatLight>Joined on:</span> ' + dt.toLocaleDateString() + '</td>';
		main += '<TD><SPAN class=ptStatLight>Might:</span> ' + addCommas(Seed.player.might) + '</td>';
		main += '<TD><SPAN class=ptStatLight>Alliance:</span> ' + getMyAlliance()[1] + '</td>';
		main += '<TD align=right><SPAN class=ptStatLight>Domain:</span> ' + uW.domainName + '</td></tr></table></div>';
		main += '<TABLE class=ptTab align=left><TR>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubS type=submit value=' + uW.g_js_strings.commonstr.overview + '></td>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubA type=submit value=' + uW.g_js_strings.commonstr.resources + '></td>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubB type=submit value=' + uW.g_js_strings.commonstr.troops + '></td>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubC type=submit value=' + uW.g_js_strings.modaltitles.buildings + '></td>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubD type=submit value=' + uW.g_js_strings.commonstr.info + '></td></tr></table><BR><BR>';
		main += '<DIV id=ptOverOutput align=left style="margin-top:10px; background-color:#F8F8F8; height:680px;"></div>';
		main += '<TD width = "100px" ; border:none"><a href="https://code.google.com/p/koc-power-tools/wiki/HowToOverview" target="_blank">HELP</a></td></tr>';
		t.cont.innerHTML = main;
		t.Overv = document.getElementById('ptOverOutput');
		document.getElementById('ptmrchSubS').addEventListener('click', e_butSubtab, false);
		document.getElementById('ptmrchSubA').addEventListener('click', e_butSubtab, false);
		document.getElementById('ptmrchSubB').addEventListener('click', e_butSubtab, false);
		document.getElementById('ptmrchSubC').addEventListener('click', e_butSubtab, false);
		document.getElementById('ptmrchSubD').addEventListener('click', e_butSubtab, false);
		changeSubtab(document.getElementById('ptmrchSub' + Options.curOverTab));

		function e_butSubtab(evt) {
			changeSubtab(evt.target);
		}

		function changeSubtab(but) {
			if (but == t.curTabBut)
				return;
			if (t.curTabBut) {
				t.curTabBut.className = 'pbSubtab';
				t.curTabBut.disabled = false;
			}
			t.curTabBut = but;
			but.className = 'pbSubtab pbSubtabSel';
			but.disabled = true;
			t.curTabName = but.id.substr(-1);
			Options.curOverTab = t.curTabName;
			t.show();
		}
	},
	hide: function () {
		var t = Tabs.OverView;
		clearTimeout(t.displayTimer);
	},
	show: function () {
		var t = Tabs.OverView;
		clearTimeout(t.displayTimer);
		if (t.curTabName == 'S')
			t.paintOverview();
		else if (t.curTabName == 'A')
			t.showResources();
		else if (t.curTabName == 'B')
			t.showTroops();
		else if (t.curTabName == 'C')
			t.showBuilds();
		else if (t.curTabName == 'D')
			t.showInfo();
	},
	showResources: function () {
		var t = Tabs.OverView;
		t.Overv.innerHTML = null;
		t.Overv.style.maxHeight = '745px';
		t.Overv.style.overflowY = 'scroll';
		t.Overv.style.maxWidth = '745px';
		t.Overv.style.overflowX = 'scroll';
		clearTimeout(t.displayTimer);
		var z = "<DIV id=overMain style='font-size:11px'><TABLE class=ptTabOverview cellpadding=0 cellspacing=0><TR valign=top align=right><TD style='background: #FFFFFF; border:none;'></td>";
		for (i = 0; i < Cities.numCities; i++) {
			z += "<TD width=81 style='background: #FFFFFF'><B>" + Cities.cities[i].name.substring(0, 11) + '</b><BR>' + coordLink(Cities.cities[i].x, Cities.cities[i].y) + "<BR>" + uW.provincenames['p' + Cities.cities[i].provId];
			cityID = 'city' + Cities.cities[i].id;
			Gate = parseInt(Seed.citystats[cityID].gate);
			if (Gate == 0)
				z += '<BR>Hiding</td>';
			else
				z += '<BR><SPAN class=boldRed>Defending</span></td>';
		}
		// boosts
		var trupkeepreduce = 0;
		trupkeepreduce = Math.min(equippedthronestats(79), 33);
		var trprodres = equippedthronestats(82);
		var trprod = [0, 0, 0, 0, 0];
		trprod[1] = Math.min(equippedthronestats(83) + trprodres, 2000);
		trprod[2] = Math.min(equippedthronestats(84) + trprodres, 2000);
		trprod[3] = Math.min(equippedthronestats(85) + trprodres, 2000);
		trprod[4] = Math.min(equippedthronestats(86) + trprodres, 2000);
		var trkntres = Math.min(equippedthronestats(76), 165);
		for (var a = 1; a <= 5; a++) {
			var total = 0;
			z += '<TR><TD colspan="8" style="background: #FFFFFF"><B>' + ((a != 5) ? uW.resourceinfo['rec' + a] : uW.resourceinfo['7']) + ': </b></td></tr><TR>';
			for (b = 0; b < Cities.numCities; b++) total += parseInt((a != 5) ? Seed.resources["city" + Seed.cities[b][0]]['rec' + a][0] / 3600 : Seed.resources["city" + Seed.cities[b][0]]['rec' + a][0]);
			z += '<TD>' + addCommas(total) + '</td>';
			for (b = 0; b < Cities.numCities; b++) z += '<TD align=right ">' + addCommasInt((a != 5) ? Seed.resources["city" + Seed.cities[b][0]]['rec' + a][0] / 3600 : Seed.resources["city" + Seed.cities[b][0]]['rec' + a][0]) + '</font></td>';
			z += '</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">' + uW.g_js_strings.showResourceTooltip.caplimit + ':</font></td>';
			for (b = 0; b < Cities.numCities; b++) {
				z += '<TD align=right style="background: #FFFFFF">';
				var kntId = uW.seed.leaders["city" + Seed.cities[b][0]].resourcefulnessKnightId;
				var kntresful = 0;
				if (kntId > 0)
					trkntresful = trkntres;
				if (a == 5) {
					var aethcapinc = 0;
					aethcapinc += equippedthronestats(88);
					var equippedItems = equippedthroneItems(equippedItems);
					var currSet = uW.cm.ThroneController.hasFactionBonus(equippedItems);
					if (currSet.hazBonus && currSet.faction === "fey")
						aethcapinc += uW.cm.ThroneController.effectBonus(95);
					var aethercap = Math.round(2000000 * (1 + Math.min(aethcapinc, unsafeWindow.cm.thronestats.boosts["ResourceCap"].Max) / 100));
					z += (aethercap > parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec' + a][0])) ? '<FONT COLOR= "669900">' : '<FONT COLOR="686868">';
					z += addCommas(aethercap);
				} else {
					if (parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec' + a][1] / 3600) > parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec' + a][0] / 3600)) z += '<FONT COLOR= "669900">';
					else z += '<FONT COLOR="686868">';
					z += addCommas(parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec' + a][1] / 3600));
				}
				z += '</font></td>';
			}
			if (a != 5) {
				z += '</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">' + uW.g_js_strings.showResourceTooltip.hrprod + ':</font></td>';
				for (b = 0; b < Cities.numCities; b++) {
					var rp = getResourceProduction(Seed.cities[b][0]);
					var bp = uW.cm.Resources.getProductionBase(a, Seed.cities[b][0]);
					var upkbase = uW.cm.Resources.getUpkeep(a, Seed.cities[b][0]) / (1 - trupkeepreduce / 100);
					var usage = parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec' + a][3]);
					// adjust for throne room upkeep reduction
					if (a == 1)
						usage = parseInt(usage - upkbase * trupkeepreduce / 100);
					z += '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">' + addCommas(parseInt(rp[a] - usage + bp * (trprod[a]) / 100)) + '</font></td>';
				}
			}
			z += '</tr>';
			if (a == 1) {
				z += '<TR><TD style="background: #FFFFFF"><FONT COLOR="686868">' + uW.g_js_strings.commonstr.upkeep + ':</font></td>';
				for (b = 0; b < Cities.numCities; b++) {
					var rp = getResourceProduction(Seed.cities[b][0]);
					var bp = uW.cm.Resources.getProductionBase(a, Seed.cities[b][0]);
					var usage = parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec' + a][3]);
					var upkbase = uW.cm.Resources.getUpkeep(a, Seed.cities[b][0]) / (1 - trupkeepreduce / 100);
					// adjust for throne room bonuses
					usage = parseInt(usage - upkbase * trupkeepreduce / 100);
					var prod = rp[a] - usage + bp * (trprod[a]) / 100;
					var timeLeft = parseInt(Seed.resources["city" + Seed.cities[b][0]]['rec' + a][0]) / 3600 / (0 - prod) * 3600;
					if (prod > 0) z += '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">----</font></td>';
					else {
						if (Options.enableFoodWarn && timeLeft < (Options.foodWarnHours * 3600)) z += '<TD align=right style="background: #FFFFFF"><FONT COLOR=RED>';
						else z += '<TD align=right style="background: #FFFFFF"> <FONT COLOR="686868">';
						z += timestrShort(timeLeft) + '</font></td>';
					}
				}
			}
			var totalmarching = 0;
			for (b = 0; b < Cities.numCities; b++) {
				var march = Seed.queue_atkp['city' + Seed.cities[b][0]];
				if (march != [])
					for (c in march)
						if (march[c]['resource' + a] != undefined && march[c]['marchType'] != 9) totalmarching += parseInt(march[c]['resource' + a]);
			}
			if (totalmarching > 0) {
				z += '</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">' + uW.g_js_strings.commonstr.marching + ':</font></td>';
				for (b = 0; b < Cities.numCities; b++) {
					var recmarching = 0;
					var march = Seed.queue_atkp['city' + Seed.cities[b][0]];
					if (march != [])
						for (c in march)
							if (march[c]['resource' + a] != undefined && march[c]['marchType'] != 9) recmarching += (parseInt(march[c]['resource' + a]));
					if (recmarching != 0) z += '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">' + addCommas(recmarching) + '</font></td>';
					else z += '<TD align=right style="background: #FFFFFF"></td>';
				}
			}
		}
		z += '</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td><TR><TD colspan="8" style="background: #FFFFFF"><B>' + uW.g_js_strings.commonstr.gold + ':</b></td></tr><TR>';
		var goldtotal = 0;
		for (b = 0; b < Cities.numCities; b++) goldtotal += parseInt(Seed.citystats["city" + Seed.cities[b][0]]['gold'][0]);
		z += '<TD>' + addCommas(goldtotal) + '</td>';
		for (b = 0; b < Cities.numCities; b++) {
			z += '<TD align=right >' + addCommas(Seed.citystats["city" + Seed.cities[b][0]]['gold'][0]) + '</td>';
		}
		z += '<TR><TD style="background: #FFFFFF"><FONT COLOR="686868">' + uW.g_js_strings.showGoldTooltip.netincome + ':</font></td>';
		for (b = 0; b < Cities.numCities; b++) {
			var f = 1;
			if (parseInt(Seed.playerEffects.r0BstExp) > unixTime()) f = 2;
			var g = parseInt(parseInt(Seed.citystats["city" + Seed.cities[b][0]]['gold'][1] * Seed.citystats["city" + Seed.cities[b][0]]['pop'][0]) * 0.01) * f;
			var h = parseInt(Seed.citystats["city" + Seed.cities[b][0]]["gold"][2] * 10 * -1);
			z += '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">' + addCommas(g + h) + '</font></td>';
		}
		z += '</tr><TR><TD colspan="8" style="background: #FFFFFF">&nbsp;</td> </tr><TR><TD style="background: #F8F8F8"><B>' + uW.g_js_strings.showPopTooltip.idlepop + ':</b></td>';
		for (b = 0; b < Cities.numCities; b++) {
			var i = Seed.citystats["city" + Seed.cities[b][0]]['pop'][0];
			var j = Seed.citystats["city" + Seed.cities[b][0]]['pop'][3];
			var k = i - j;
			if (k > 0) z += '<TD align=right style="background: #FFFFFF">' + addCommas(k) + '</td>';
			else z += '<TD align=right style="background: #FFFFFF"><FONT COLOR=red>' + addCommas(k) + '</font></td>';
		}
		z += '</tr><TR><TD colspan="8" style="background: #FFFFFF">&nbsp;</td> </tr><TR><TD style="background: #F8F8F8"><B>' + uW.g_js_strings.showMyWilderness.conqueredwild + ':</b></td>';
		for (b = 0; b < Cities.numCities; b++) {
			var totWilds = 0;
			dat = Seed.wilderness['city' + Seed.cities[b][0]];
			if (dat != null && matTypeof(dat) == 'object')
				for (k in dat)
			++totWilds;
			var castle = parseInt(Seed.buildings['city' + Seed.cities[b][0]].pos0[1]);
			if (castle == 11) castle = 12;
			else if (castle == 12) castle = 14;
			if (totWilds < castle)
				z += '<TD align=right "><FONT COLOR=RED>' + totWilds + '/' + castle + '</font></span>';
			else
				z += '<TD align=right>' + totWilds + '/' + castle + '</span>';
		}
		z += '</tr>';
		for (c in uW.cm.WILDERNESS_TYPES) {
			var wildtype = '';
			switch (c) {
			case 'GRASSLAND':
				wildtype = uW.g_js_strings.commonstr.grassland;
				break;
			case 'LAKE':
				wildtype = uW.g_js_strings.commonstr.lake;
				break;
			case 'WOODS':
				wildtype = uW.g_js_strings.commonstr.woods;
				break;
			case 'HILLS':
				wildtype = uW.g_js_strings.commonstr.hills;
				break;
			case 'MOUNTAIN':
				wildtype = uW.g_js_strings.commonstr.mountain;
				break;
			case 'PLAIN':
				wildtype = uW.g_js_strings.commonstr.plain;
				break;
			}
			var grandtotal = 0;
			for (b = 0; b < Cities.numCities; b++) {
				dat = Seed.wilderness['city' + Seed.cities[b][0]];
				if (dat != null && matTypeof(dat) == 'object')
					for (k in dat)
						if (dat[k]['tileType'] == uW.cm.WILDERNESS_TYPES[c]) grandtotal++;
			}
			if (grandtotal > 0) {
				z += '<TR><TD style="background: #FFFFFF">' + wildtype + '</td>';
				for (b = 0; b < Cities.numCities; b++) {
					var total = 0;
					dat = Seed.wilderness['city' + Seed.cities[b][0]];
					if (dat != null && matTypeof(dat) == 'object')
						for (k in dat)
							if (dat[k]['tileType'] == uW.cm.WILDERNESS_TYPES[c])
							++total;
					if (total > 0) z += '<TD align=right style="background: #FFFFFF">' + total + '</td>';
					else z += '<TD style="background: #FFFFFF"></td>';
				}
				z += '</tr>';
			}
		}
		var totboosts = false;
		var l = Seed.playerEffects;
		for (p in l)
			if (l[p] > unixTime()) totboosts = true;
		if (totboosts) {
			z += '</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td> </tr><TR><TD style="background: #F8F8F8"><B>' + uW.g_js_strings.commonstr.boost + ':</b></td>';
			for (p in l) {
				if (p == 'r0BstExp' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.resourceinfo['rec' + 0] + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'r1BstExp' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.resourceinfo['rec' + 1] + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'r2BstExp' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.resourceinfo['rec' + 2] + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'r3BstExp' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.resourceinfo['rec' + 3] + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'r4BstExp' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.resourceinfo['rec' + 4] + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'atkExpire' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.g_js_strings.commonstr.attack + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'defExpire' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.g_js_strings.commonstr.defend + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'loadExpire' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.g_js_strings.modal_barracks_train.load + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'returnExpire' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.g_js_strings.commonstr.returning + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'troopUpkeepReductExp' && l[p] > unixTime()) z += '<TR><TD style="background: #FFFFFF">' + uW.g_js_strings.commonstr.upkeep + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
				if (p == 'fogExpire' && l[p] > unixTime()) z += '<TR ><TD style="background: #FFFFFF">' + uW.itemlist.i10021.name + '</td><TD align=right style="background: #FFFFFF">' + timestr((l[p] - unixTime())) + '</td></tr>';
			}
		}
		z += '</table></div>';
		t.Overv.innerHTML = z;
		t.displayTimer = setTimeout(t.showResources, 1000);
	},
	showTroops: function () {
		var t = Tabs.OverView;
		t.Overv.innerHTML = null;
		t.Overv.style.maxHeight = '650px';
		t.Overv.style.overflowY = 'scroll';
		t.Overv.style.maxWidth = '745px';
		t.Overv.style.overflowX = 'scroll';
		var n = "<TABLE class=ptTabOverview cellpadding=0 cellspacing=0><TR valign=top align=right></td><TD colspan='2' id=update align=center style='background: #FFFFFF; border:none; vertical-align:middle'><INPUT id=TEST type=submit value=" + uW.g_js_strings.modal_progress_actions.updatestatus + "></td></td>";
		for (i = 0; i < Cities.numCities; i++) {
			n += "<TD width=81 style='background: #FFFFFF'><B>" + Cities.cities[i].name.substring(0, 11) + '</b><BR>' + coordLink(Cities.cities[i].x, Cities.cities[i].y) + "<BR>" + uW.provincenames['p' + Cities.cities[i].provId] + "</td>";
		}
		for (var ui in uW.cm.UNIT_TYPES) {
			a = uW.cm.UNIT_TYPES[ui];
			var total = 0;
			var marching = 0;
			var raiding = 0;
			var tottraining = 0;
			for (b = 0; b < Cities.numCities; b++) {
				var train = Seed.queue_unt['city' + Seed.cities[b][0]];
				if (train != [])
					for (c in train)
						if (train[c][0] == a) tottraining += parseInt(train[c][1]);
			}
			if (tottraining > 0) var rowsp = 3;
			else var rowsp = 2;
			n += '<TR><TD rowspan="' + rowsp + '" style="background: #FFFFFF; vertical-align:top;"><img src=https://kabam1-a.akamaihd.net/silooneofcamelot//fb/e2/src/img/units/unit_' + a + '_30.jpg></td>';
			for (b = 0; b < Cities.numCities; b++) total += parseInt(Seed.units['city' + Seed.cities[b][0]]['unt' + a]);
			if (total > 0) n += '<TD align=right >' + addCommas(total) + '</td>';
			else n += '<TD align=right >&nbsp;</td>';
			for (b = 0; b < Cities.numCities; b++) {
				if (Seed.units['city' + Seed.cities[b][0]]['unt' + a] > 0) n += '<TD align=right >' + addCommas(Seed.units['city' + Seed.cities[b][0]]['unt' + a]) + '</td>';
				else n += '<TD ></td>';
			}
			n += '</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">' + uW.g_js_strings.commonstr.marching + '</font></td>';
			for (b = 0; b < Cities.numCities; b++) {
				marching = 0;
				raiding = 0;
				var atkp = Seed.queue_atkp['city' + Seed.cities[b][0]];
				if (atkp != []) {
					for (c in atkp) {
						if (atkp[c]['marchType'] == 9) raiding += (parseInt(atkp[c]['unit' + a + 'Count']) + parseInt(atkp[c]['unit' + a + 'Return']));
						else if (atkp[c]['marchType'] != undefined) marching += parseInt(atkp[c]['unit' + a + 'Count']);
					}
					if (marching > 0 || raiding > 0) {
						n += '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">' + addCommas(marching) + ' / ';
						n += addCommas(raiding) + '</font></td>';
					} else n += '<TD style="background: #FFFFFF"></td>';
				}
			}
			if (tottraining > 0) {
				n += '</tr><TR><TD style="background: #FFFFFF"><FONT COLOR="686868">' + uW.g_js_strings.modal_openBarracks.trainingttl + '</font></td>';
				for (b = 0; b < Cities.numCities; b++) {
					training = 0;
					var train = Seed.queue_unt['city' + Seed.cities[b][0]];
					if (train != []) {
						for (c in train)
							if (train[c][0] == a) training += parseInt(train[c][1]);
						if (training > 0) {
							n += '<TD align=right style="background: #FFFFFF"><FONT COLOR="686868">' + addCommas(training) + '</font></td>';
						} else n += '<TD style="background: #FFFFFF"></td>';
					}
				}
				n += '</tr>';
			}
		}
		n += '<TR><TD colspan="8" style="background: #FFFFFF; border:none;">&nbsp;</td> </tr>';
		n += '<TR><TD colspan="2" style="border=solid">' + uW.g_js_strings.openKnights.myknights + ':</td>';
		for (b = 0; b < Cities.numCities; b++) {
			var knights = 0;
			var knightscity = Seed.knights['city' + Seed.cities[b][0]];
			if (knightscity != [])
				for (c in knightscity)
					if (knightscity[c]['knightId'] > 0) knights++;
			n += '<TD align=right >' + knights + '</td>';
		}
		n += '</tr><TR><TD colspan="2" >' + uW.g_js_strings.commonstr.combat + ':</td>';
		for (b = 0; b < Cities.numCities; b++) {
			var combat = 0;
			var knightscity = Seed.knights['city' + Seed.cities[b][0]];
			if (knightscity != [])
				for (c in knightscity)
					if (knightscity[c]['combat'] > combat)
						if (Seed.leaders['city' + Seed.cities[b][0]]['combatKnightId'] != knightscity[c]['knightId']) combat = knightscity[c]['combat'];
			n += '<TD align=right style="background: #FFFFFF">' + combat + '</td>';
		}
		n += '<TR><TD colspan="8" style="background: #FFFFFF; border:none;">&nbsp;</td> </tr>';
		n += '<TR><TD colspan="2" style="border=solid">' + uW.g_js_strings.modal_barracks_trainingtab.totaltraintime + ':</td>';
		for (b = 0; b < Cities.numCities; b++) {
			var time = 0;
			now = unixTime();
			var unt = Seed.queue_unt['city' + Seed.cities[b][0]];
			//alert(unt.length);
			if (unt != null && unt.length > 0) time = (unt[unt.length - 1][3] - now);
			if (time < 0) time = 0;
			if (time < 3600) n += '<TD align=right ><FONT COLOR=red>' + timestr(time) + '</font></td>';
			else n += '<TD align=right >' + timestr(time) + '</td>';
		}
		n += '</tr></table>';
		t.Overv.innerHTML = n;
		document.getElementById('TEST').addEventListener('click', function () {
			/*
   	  		var params = uW.Object.clone(uW.g_ajaxparams);
   	    			new AjaxRequest(uW.g_ajaxpath + "/fb/e2/src/main_src.php?g=&y=0&n=nan001&l=nl_NL&messagebox=&standalone=0&res=1&iframe=1&lang=en&ts=1304248288.7067&s=250&appBar=" + uW.g_ajaxsuffix, {
   	    			    method: "POST",
   	    			    parameters: params,
   	    			    onSuccess: function (rslt) {
   	    			        var mainSrcHTMLCode = rslt.responseText;
   	    			    	var myregexp = /var seed=\{.*?\};/;
   	    			    	var match = myregexp.exec(mainSrcHTMLCode);
   	    			    	if (match != null) {
   	    			    		result = match[0];
   	    			    		result = result.substr(4);
   	    			    		var seed = eval(result);
   	  	  			    		uW.document.seed = seed;
   	  	  			    		Seed = seed;
   	  	  			    		uW.seed = seed;
   	  	  			    		document.getElementById('update').style.background ='#99FF99';
   	  	  			    		setTimeout(function(){ (document.getElementById('update').style.background ='#FFFFF'); }, 1000);
   	    			    	}
   	    			    },
   	    			    onFailure: function () {
   	    			      if (notify != null)
   	    			        notify(rslt.errorMsg);
   	    			    },
   	    			});
   	    			*/
			Tabs.Options.updateAll();
		}, false);
		t.displayTimer = setTimeout(t.showTroops, 1000);
	},
	showBuilds: function () {
		var t = Tabs.OverView;
		clearTimeout(t.displayTimer);
		t.Overv.innerHTML = null;
		t.Overv.style.maxHeight = '650px';
		t.Overv.style.overflowY = 'scroll';
		t.Overv.style.maxWidth = '745px';
		t.Overv.style.overflowX = 'scroll';
		var wall = 0;
		var blacksmith = 0;
		var fletching = 0;
		var geometry = 0;
		var metalalloys = 0;
		var logging = 0;
		var poisonededge = 0;
		var FieldSpace = {
			1: 13,
			2: 16,
			3: 19,
			4: 22,
			5: 25,
			6: 28,
			7: 31,
			8: 34,
			9: 37,
			10: 40,
			11: 41,
			12: 42
		};
		fertilizer = Seed.tech['tch1'];
		logging = Seed.tech['tch2'];
		stoneworking = Seed.tech['tch3'];
		mining = Seed.tech['tch4'];
		geometry = Seed.tech['tch5'];
		eagleeyes = Seed.tech['tch6'];
		poisonededge = Seed.tech['tch8'];
		metalalloys = Seed.tech['tch9'];
		featherweightpowder = Seed.tech['tch10'];
		magicalmapping = Seed.tech['tch11'];
		alloyhorseshoes = Seed.tech['tch12'];
		fletching = Seed.tech['tch13'];
		shrinkingpowder = Seed.tech['tch14'];
		healingpotions = Seed.tech['tch15'];
		giantsstrength = Seed.tech['tch16'];
		var m = '<DIV id=BuildsDiv style="font-size:12px"><TABLE cellpadding=5 cellspacing=0 border="1" style="border: 1px solid; border-style: none none none none;"><TR valign=top align=right>';
		m += "<TD align=left width=85 style='background-color:" + Colors.OverviewDarkRow + ";'><INPUT id=showReq type=checkbox " + (t.showReq ? 'CHECKED ' : '') + ">Show missing req.</td>";
		for (i = 0; i < Cities.numCities; i++) {
			m += "<TD width=79 style='background-color:" + Colors.OverviewDarkRow + "'><B>" + Cities.cities[i].name.substring(0, 11) + "</b><BR>" + coordLink(Cities.cities[i].x, Cities.cities[i].y) + "<BR></td>";
		}
		m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">Building</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			m += '<TD width=79 style="background:#FFFFFF">';
			if (Seed.queue_con[city][0] != undefined) {
				m += uW.buildingcost['bdg' + Seed.queue_con[city][0][0]][0];
				m += ' (' + Seed.queue_con[city][0][1] + ')';
				m += '<br>' + timestr((Seed.queue_con[city][0][4] - unixTime()), true);
			}
			m += '</td>';
		}
		m += '</tr>';
		m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">Researching</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			m += '<TD width=79 style="background:#FFFFFF">';
			if (Seed.queue_tch[city][0] != undefined) {
				m += uW.techcost['tch' + Seed.queue_tch[city][0][0]][0];
				m += ' (' + Seed.queue_tch[city][0][1] + ')';
				m += '<br>' + timestr((Seed.queue_tch[city][0][3] - unixTime()), true);
			}
			m += '</td>';
		}
		m += '</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td></tr>';
		m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">' + uW.fortcost['frt53'][0] + '</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			for (y in Seed.buildings[city]) {
				if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1];
			}
			if (Seed.buildings[city].pos1 == null) wall = 0;
			else wall = parseInt(Seed.buildings[city].pos1[1]);
			var WallSpace = 0;
			for (var b = 1; b < (wall + 1); b++) {
				WallSpace += (b * 3000)
			};
			max = WallSpace / 2 / 2 - parseInt(Seed.fortifications[city]["fort53"]) - parseInt(Seed.fortifications[city]["fort55"]);
			m += '<TD width=79 style="background:#FFFFFF">' + Seed.fortifications[city]["fort53"];
			if (wall >= 6 && blacksmith >= 6 && fletching >= 5 && max > 0) m += '<br>Left: ' + max + '</td>';
			else if (t.showReq) {
				if (wall < 6) m += '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(6)</font>';
				if (blacksmith < 6) m += '<br><FONT COLOR= "CC0000">BlackS.: ' + blacksmith + '(6)</font>';
				if (fletching < 5) m += '<br><FONT COLOR= "CC0000">Fletch.: ' + fletching + '(5)</font>';
				m += '</td>';
			}
		}
		m += '</tr><TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">' + uW.fortcost['frt55'][0] + '</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			for (y in Seed.buildings[city]) {
				if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1];
			}
			if (Seed.buildings[city].pos1 == null) wall = 0;
			else wall = parseInt(Seed.buildings[city].pos1[1]);
			var WallSpace = 0;
			for (var b = 1; b < (wall + 1); b++) {
				WallSpace += (b * 3000)
			};
			max = WallSpace / 2 / 4 - parseInt(Seed.fortifications[city]["fort53"]) - parseInt(Seed.fortifications[city]["fort55"]);
			m += '<TD width=79 style="background:#FFFFFF">' + Seed.fortifications[city]["fort55"];
			if (wall >= 8 && blacksmith >= 8 && fletching >= 7 && geometry >= 7 && max > 0) m += '<br>Left: ' + max + '</td>';
			else if (t.showReq) {
				if (wall < 8) m += '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(8)</font>';
				if (blacksmith < 8) m += '<br><FONT COLOR= "CC0000">BlackS.: ' + blacksmith + '(8)</font>';
				if (fletching < 7) m += '<br><FONT COLOR= "CC0000">Fletch.: ' + fletching + '(7)</font>';
				if (geometry < 7) m += '<br><FONT COLOR= "CC0000">Geomet.: ' + geometry + '(7)</font>';
				m += '</td>';
			}
		}
		m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">Wall defences</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			if (Seed.buildings[city].pos1 == null) wall = 0;
			else wall = parseInt(Seed.buildings[city].pos1[1]);
			build = (parseInt(Seed.fortifications[city]["fort53"]) * 2) + (parseInt(Seed.fortifications[city]["fort55"]) * 4);
			var WallSpace = 0;
			for (var b = 1; b < (wall + 1); b++) {
				WallSpace += (b * 3000)
			};
			max = WallSpace / 2;
			if (build < max) m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">';
			else m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "669900">';
			m += build + '</font>';
			m += '/' + max + '</td>';
		}
		m += '</tr><TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">' + uW.fortcost['frt60'][0] + '</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			for (y in Seed.buildings[city]) {
				if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1];
			}
			if (Seed.buildings[city].pos1 == null) wall = 0;
			else wall = parseInt(Seed.buildings[city].pos1[1]);
			var WallSpace = 0;
			for (var b = 1; b < (wall + 1); b++) {
				WallSpace += (b * 3000)
			};
			max = WallSpace / 2 / 4 - (parseInt(Seed.fortifications[city]["fort60"]) * 4) - (parseInt(Seed.fortifications[city]["fort61"]) * 1) - (parseInt(Seed.fortifications[city]["fort62"]) * 3);
			m += '<TD width=79 style="background:#FFFFFF">' + Seed.fortifications[city]["fort60"];
			if (wall >= 4 && blacksmith >= 4 && poisonededge >= 4 && max > 0) m += '<br>Left: ' + max + '</td>';
			else if (t.showReq) {
				if (wall < 4) m += '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(4)</font>';
				if (blacksmith < 4) m += '<br><FONT COLOR= "CC0000">BlackS.: ' + blacksmith + '(4)</font>';
				if (poisonededge < 4) m += '<br><FONT COLOR= "CC0000">Poison.: ' + poisonededge + '(4)</font>';
				m += '</td>';
			}
		}
		m += '</tr><TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">' + uW.fortcost['frt61'][0] + '</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			for (y in Seed.buildings[city]) {
				if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1];
			}
			if (Seed.buildings[city].pos1 == null) wall = 0;
			else wall = parseInt(Seed.buildings[city].pos1[1]);
			var WallSpace = 0;
			for (var b = 1; b < (wall + 1); b++) {
				WallSpace += (b * 3000)
			};
			max = WallSpace / 2 / 1 - (parseInt(Seed.fortifications[city]["fort60"]) * 4) - (parseInt(Seed.fortifications[city]["fort61"]) * 1) - (parseInt(Seed.fortifications[city]["fort62"]) * 3);
			m += '<TD width=79 style="background:#FFFFFF">' + Seed.fortifications[city]["fort61"];
			if (wall >= 1 && metalalloys >= 1 && max > 0) m += '<br>Left: ' + max + '</td>';
			else if (t.showReq) {
				if (wall < 1) m += '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(1)</font>';
				if (metalalloys < 1) m += '<br><FONT COLOR= "CC0000">Metal.: ' + metalalloys + '(1)</font>';
				m += '</td>';
			}
		}
		m += '</tr><TR valign=top align=right><TD style="background-color:' + Colors.OverviewDarkRow + ';">' + uW.fortcost['frt62'][0] + '</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			for (y in Seed.buildings[city]) {
				if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1];
			}
			if (Seed.buildings[city].pos1 == null) wall = 0;
			else wall = parseInt(Seed.buildings[city].pos1[1]);
			var WallSpace = 0;
			for (var b = 1; b < (wall + 1); b++) {
				WallSpace += (b * 3000)
			};
			max = (WallSpace / 2 / 3).toFixed(0) - (parseInt(Seed.fortifications[city]["fort60"]) * 4) - (parseInt(Seed.fortifications[city]["fort61"]) * 1) - (parseInt(Seed.fortifications[city]["fort62"]) * 3);
			m += '<TD width=79 style="background:#FFFFFF">' + Seed.fortifications[city]["fort62"];
			if (wall >= 2 && blacksmith >= 2 && logging >= 2 && max > 0) m += '<br>Left: ' + max + '</td>';
			else if (t.showReq) {
				if (wall < 2) m += '<br><FONT COLOR= "CC0000">Wall: ' + wall + '(2)</font>';
				if (blacksmith < 2) m += '<br><FONT COLOR= "CC0000">BlackS.: ' + blacksmith + '(2)</font>';
				if (logging < 2) m += '<br><FONT COLOR= "CC0000">Logg.: ' + logging + '(2)</font>';
				m += '</td>';
			}
		}
		m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">Field defences</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			city = 'city' + Seed.cities[i][0];
			if (Seed.buildings[city].pos1 == null) wall = 0;
			else wall = parseInt(Seed.buildings[city].pos1[1]);
			build = (parseInt(Seed.fortifications[city]["fort60"]) * 4) + (parseInt(Seed.fortifications[city]["fort61"]) * 1) + (parseInt(Seed.fortifications[city]["fort62"]) * 3);
			var WallSpace = 0;
			for (var b = 1; b < (wall + 1); b++) {
				WallSpace += (b * 3000)
			};
			max = WallSpace / 2;
			if (build < max) m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">';
			else m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "669900">';
			m += build + '</font>';
			m += '/' + max + '</td>';
		}
		m += '</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td></tr>';
		// to do: change to match ascended cities (city center)
		m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">City space</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			var count = 0;
			city = 'city' + Seed.cities[i][0];
			for (y in Seed.buildings[city]) {
				if (Seed.buildings[city][y][0] >= 5 && Seed.buildings[city][y][0] <= 21 && Seed.buildings[city][y][0] != 19) count++;
			}
			if (count == 31) m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "669900">';
			else m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">';
			m += count + '</font> (31)</td>';
		}
		m += '</tr>';
		// to do: change to match ascended cities (fields vs. resource points)
		m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">Field space</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			var count = 0;
			var castle = 0;
			city = 'city' + Seed.cities[i][0];
			for (y in Seed.buildings[city]) {
				if (Seed.buildings[city][y][0] == 0) castle = Seed.buildings[city][y][1];
				if (Seed.buildings[city][y][0] >= 1 && Seed.buildings[city][y][0] <= 4) count++;
			}
			if (count == FieldSpace[castle]) m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "669900">';
			else m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">';
			m += count + '</font> (' + FieldSpace[castle] + ')</td>';
		}
		m += '</tr>';
		for (b = 0; b <= 27; b++) {
			m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">' + uW.buildingcost['bdg' + b][0] + '</td>';
			for (c = 0; c < Seed.cities.length; c++) {
				var cid = Seed.cities[c][0];
				var fid = 0;
				if (Seed.cityData.city[cid].isPrestigeCity == true) {
					fid = Seed.cityData.city[cid].prestigeInfo.prestigeType;
				}
				m += '<TD style="width:79px; max-width:79px; word-wrap: break-word; background:#FFFFFF">';
				city = 'city' + Seed.cities[c][0];
				var count = 0;
				for (y in Seed.buildings[city]) {
					if (Seed.buildings[city][y][0] == b) {
						count++;
						if (count > 1) m += ",";
						if (Seed.buildings[city][y][1] >= 9) m += '<FONT COLOR= "669900">';
						m += Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][1] >= 9) m += '</font>';
					}
				}
				if (count == 0) {
					if ((b == 21 && fid == 1) || ((b == 22 || b == 23) && fid != 1) || ((b == 24 || b == 25) && fid != 2) || ((b == 26 || b == 27) && fid != 3)) {
						m += '-';
					} else {
						m += '<FONT COLOR= "CC0000">0</font>';
					}
				}
				m += '</td>';
			}
			m += '</tr>';
		}
		m += '</tr><TR><TD colspan="8" style="background: #FFFFFF; border:none">&nbsp;</td></tr>';
		for (i = 0; i < Cities.numCities; i++) {}
		m += '<TR valign=top align=right><TD width=85 style="background-color:' + Colors.OverviewDarkRow + ';">Guardians</td>';
		for (i = 0; i < Seed.cities.length; i++) {
			for (g = 0; g < Seed.guardian.length; g++) {
				if (Seed.guardian[g]['cityId'] == Seed.cities[i][0] && Seed.guardian[g]['level'] != 0) {
					m += '<TD width=79 style="background:#FFFFFF">';
					if (Seed.guardian[g]['level'] >= 9) m += '<FONT COLOR= "669900">';
					m += Seed.guardian[g]['level'] + "(" + Seed.guardian[g]['type'] + ")</td>";
					if (Seed.guardian[g]['level'] >= 9) m += '</font>';
				} else {
					if (Seed.guardian[g]['cityId'] == Seed.cities[i][0] && Seed.guardian[g]['level'] == 0) m += '<TD width=79 style="background:#FFFFFF"><FONT COLOR= "CC0000">0</font></td>'
				};
			}
		}
		m += '</tr></table><BR></table><BR><TABLE class=ptBuilds  border=1px cellpadding=2 cellspacing=0><TR valign=top align=left>';
		for (i in uW.techcost) {
			m += '<TD border=1px style="width:150px; background:#FFFFFF">' + uW.techcost[i][0] + '</td><TD align=center style="width:50px; max-width:150px; background:#FFFFFF;">';
			if (Seed.tech[i] >= 9) m += '<FONT COLOR= "669900">';
			if (Seed.tech[i] == 0) m += '<FONT COLOR= "CC0000">';
			m += Seed.tech[i];
			if (Seed.tech[i] >= 9 || Seed.tech[i] == 0) m += '</font>';
			if (t.showReq) {
				for (z = 0; z < Seed.cities.length; z++) {
					city = 'city' + Seed.cities[z][0];
					for (y in Seed.buildings[city]) {
						var farm, sawmill, quarry, mine, alchemylab, workshop, blacksmith, stable, storehouse, barracks = 0;
						if (Seed.buildings[city][y][0] == 1 && Seed.buildings[city][y][0] > farm) farm = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 2 && Seed.buildings[city][y][0] > sawmill) sawmill = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 3 && Seed.buildings[city][y][0] > quarry) quarry = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 4 && Seed.buildings[city][y][0] > mine) mine = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 9) storehouse = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 11) alchemylab = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 13 && Seed.buildings[city][y][0] > barracks) barracks = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 15) blacksmith = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 16) workshop = Seed.buildings[city][y][1];
						if (Seed.buildings[city][y][0] == 17) stable = Seed.buildings[city][y][1];
					}
				}
				m += '<FONT COLOR= "CC0000">';
				switch (i) {
				case '1':
					if (alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (farm < Seed.tech[i]) m += '<BR>Farm ' + farm + '(' + (Seed.tech[i] + 1) + ')</td>';
					break;
				case '2':
					if (alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (sawmill < Seed.tech[i]) m += '<BR>Sawmill ' + sawmill + '(' + (Seed.tech[i]) + ')';
					break;
				case '3':
					if (alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (quarry < Seed.tech[i]) m += '<BR>Quarry ' + quarry + '(' + (Seed.tech[i]) + ')</td>';
					break;
				case '4':
					if (alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (mine < Seed.tech[i]) m += '<BR>Mine ' + mine + '(' + (Seed.tech[i]) + ')';
					break;
				case '5':
					if (alchemylab < 3) m += '<BR>Alchemy Lab ' + alchemylab + '(3)';
					if (alchemylab >= 3 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (workshop < Seed.tech[i]) m += '<BR>Workshop ' + workshop + '(' + (Seed.tech[i]) + ')';
					if (stoneworking < 2) m += '<BR>Stoneworking ' + stoneworking + '(2)';
					break;
				case '6':
					if (alchemylab < 3) m += '<BR>Alchemy Lab ' + alchemylab + '(3)';
					if (alchemylab >= 3 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					break;
				case '8':
					if (alchemylab < 2) m += '<BR>Alchemy Lab ' + alchemylab + '(2)';
					if (alchemylab >= 2 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (barracks < 2) m += '<BR>Barracks ' + barracks + '(2)';
					break;
				case '9':
					if (alchemylab < 3) m += '<BR>Alchemy Lab ' + alchemylab + '(3)';
					if (alchemylab >= 3 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (blacksmith < Seed.tech[i]) m += '<BR>Blacksmith ' + blacksmith + '(' + (Seed.tech[i]) + ')';
					if (mining < Seed.tech[i]) m += '<BR>Mining ' + mining + '(' + (Seed.tech[i]) + ')';
					break;
				case '10':
					if (alchemylab < 4) m += '<BR>Alchemy Lab ' + alchemylab + '(4)';
					if (alchemylab >= 4 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					break;
				case '11':
					if (alchemylab < 4) m += '<BR>Alchemy Lab ' + alchemylab + '(4)';
					if (alchemylab >= 4 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					break;
				case '12':
					if (alchemylab < 5) m += '<BR>Alchemy Lab ' + alchemylab + '(5)';
					if (alchemylab >= 5 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (stable < Seed.tech[i]) m += '<BR>Stable ' + stable + '(' + (Seed.tech[i] + 1) + ')';
					if (metalalloys < Seed.tech[i]) m += '<BR>Metal Alloys ' + metalalloys + '(' + (Seed.tech[i] + 1) + ')';
					break;
				case '13':
					if (alchemylab < 4) m += '<BR>Alchemy Lab ' + alchemylab + '(4)';
					if (alchemylab >= 4 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (logging < 4) m += '<BR>Logging ' + logging + '(4)';
					break;
				case '14':
					if (alchemylab < 6) m += '<BR>Alchemy Lab ' + alchemylab + '(6)';
					if (alchemylab >= 6 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (storehouse < Seed.tech[i]) m += '<BR>Storehouse ' + storehouse + '(' + (Seed.tech[i]) + ')';
					if (logging < 3) m += '<BR>Logging ' + logging + '(3)';
					break;
				case '15':
					if (alchemylab < 6) m += '<BR>Alchemy Lab ' + alchemylab + '(6)';
					if (alchemylab >= 6 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (featherweightpowder < 3) m += '<BR>Featherweight Powder  ' + featherweightpowder + '(3)';
					break;
				case '16':
					if (alchemylab < 5) m += '<BR>Alchemy Lab ' + alchemylab + '(5)';
					if (alchemylab >= 5 && alchemylab < Seed.tech[i]) m += '<BR>Alchemy Lab ' + alchemylab + '(' + (Seed.tech[i]) + ')';
					if (logging < 5) m += '<BR>Logging ' + logging + '(5)';
					if (geometry < 2) m += '<BR>Geometry  ' + geometry + '(2)';
					break;
				}
				m += '</font>';
			}
			m += '</td></tr>';
		}
		m += '</table><br />';
		m += '<table class="ptBuilds" border="1px" cellpadding="2" cellspacing="0"><tr valign="top" align="left">';
		for (i in uW.techcost2) {
			m += '<td border="1px" style="width: 150px; background: #ffffff;">' + uW.techcost2[i][0] + '</td>';
			m += '<td align="center" style="width: 50px; max-width: 150px; background: #ffffff;">';
			if (Seed.tech2[i] >= 9) m += '<font color="669900">';
			if (Seed.tech2[i] == 0) m += '<font color="cc0000">';
			m += Seed.tech2[i];
			if (Seed.tech2[i] >= 9 || Seed.tech2[i] == 0) m += '</font>';
			// to do: show missing requirements
			//if (t.showReq) {}
			m += '</td></tr>';
		}
		m += '</table></div>';
		t.Overv.innerHTML = m;
		document.getElementById('showReq').addEventListener('change', function () {
			t.showReq = document.getElementById('showReq').checked;
			t.showBuilds();
		}, false);
		t.displayTimer = setTimeout(t.showBuilds, 1000);
	},
	showInfo: function () {
		var t = Tabs.OverView;
		t.Overv.innerHTML = null;
		t.Overv.style.maxHeight = '650px';
		t.Overv.style.overflowY = 'scroll';
		t.Overv.style.maxWidth = '745px';
		t.Overv.style.overflowX = 'scroll';
		clearTimeout(t.displayTimer);
		//Useful links
		var u = '<DIV class=ptstat>USEFUL LINKS</div><DIV id=ptLinks><TABLE align=center cellpadding=1 cellspacing=0><TR>';
		u += '<TD width="300px" ; border:none">Scripts</td><TD width="300px" ; border:none">Information sites</td></tr>';
		u += '<TR><TD width="300px" ; border:none"><a href="https://code.google.com/p/koc-power-tools" target="_blank">Power Tools (Koc Scripters)</a></td>';
		u += '<TD width="300px" ; border:none"><a href="http://koctools.com/index.php?pageid=servers" target="_blank">KOCTools</a></td></tr>';
		u += '<TR><TD width="100px" ; border:none"><a href="https://code.google.com/p/koc-power-tools/wiki/Home?tm=6" target="_blank">Power Tools WIKI</a></td>';
		u += '<TD width="300px" ; border:none"><a href="http://koc.dunno.com/index.sjs?f=ListServers" target="_blank">KOC Mapper</a></td></tr>';
		u += '<TR><TD width="100px" ; border:none"><a href="https://code.google.com/p/koc-power-bot" target="_blank">Power Bot (Koc Scripters)</a></td>';
		u += '<TD width="300px" ; border:none"><a href="http://kocmon.com/">Kocmon</a></td></tr>';
		u += '<TR><TD width="100px" ; border:none"><a href="https://code.google.com/p/koc-power-bot/wiki/Home?tm=6" target="_blank">Power Bot WIKI</a></td>';
		u += '<TD width="300px" ; border:none"><a href="http://koc.wikia.com/wiki/" target="_blank">Koc Wikia</a></td></tr>';
		u += '<TR><TD width="300px" ; border:none"><a href="https://code.google.com/p/koc-battle-console/" target="_blank">Battle Console</a></td><TD width="100px" ; border:none"></td></tr>';
		u += '<TR><TD width="300px" ; border:none"><a href="https://code.google.com/p/ne0-kocbot/" target="_blank">Combined TR/Champ Organiser (Ne0)</a></td><TD width="100px" ; border:none"></td></tr>';
		u += '<TR><TD width="100px" ; border:none"><a href="https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/versions/?page=1#version-1.15" target="_blank">Greasemonkey (1.15)</a></td><TD width="100px" ; border:none"></td>';
		u += '<TR><TD width="100px" ; border:none"><a href="https://addons.mozilla.org/en/firefox/addon/scriptish/" target="_blank">Scriptish</a></td><TD width="100px" ; border:none"></td>';
		u += '</tr></table></div><BR>';
		//Crest info
		var crestreq = {
			3:{1101:4, 1102:2, 1103:1},
	  		4:{1103:4, 1104:3, 1105:1},
	  		5:{1106:4, 1107:3, 1108:2},
	  		6:{1109:4, 1110:3, 1111:2},
	  		7:{1112:4, 1113:3, 1114:2},
			8:{1115:4, 1120:3, 1121:2}
		};
		u += '<DIV class=ptstat>CREST INFO</div><DIV id=ptLinks><TABLE align=center cellpadding=1 cellspacing=0><TR>';
		for (city in crestreq) {
			deed = 'q800' + city;
			if (Seed.quests[deed] == 1) u += '<TD width=75px style="background:#CCFFCC">';
			else u += '<TD width=75px ">';
			u += uW.g_js_strings.commonstr.city + ' ' + city + '</td>';
			for (crest in crestreq[city]) {
				owned = Seed.items['i' + crest];
				if (Seed.quests[deed] == 1) u += '<TD 200px style="background:#CCFFCC">';
				else u += '<TD 200px ">';
				if (owned == undefined) owned = 0;
				if (owned < crestreq[city][crest]) u += '<FONT color=red>' + owned + '/' + crestreq[city][crest] + '</font> ' + uW.itemlist['i' + crest]['name'] + '</td>';
				else u += '<FONT color=green>' + owned + '/' + crestreq[city][crest] + '</font> ' + uW.itemlist['i' + crest]['name'] + '</td>';
			}
			u += '</tr>';
		}
		u += '</table><BR>';
		//Unit info
		fortmight = {
			u53: "4",
			u55: "7",
			u60: "1",
			u61: "2",
			u62: "3",
		};
		rownum = 0;
		u += '<STYLE>.xtabH {background:#ffffe8; border:none; padding-right: 5px; padding-left: 5px; margin-left:10px; }\
	              .xtabHL { background:#ffffe8; border-width: 1px; border-style: none none none solid; padding-right:5px; padding-left:5px; margin-left:10px; }\
	              .xtabL { background:none; border-width: 1px; border-style: none none none solid; padding-right:5px; padding-left: 5px; margin-left:10px; }\
	              .xtabLine { padding:0px; spacing:0px; height:1px; border-color:black; border-width: 1px; border-style: none none solid none }</style>\
	          <DIV style="overflow-y:auto; overflow-x:hidden"><DIV class=ptstat>UNIT INFORMATION</div><TABLE align=center cellpadding=1 cellspacing=0>\
	          <TR align=center><TD class=xtab></td><TD class=xtabHL colspan=5><B>COST TO BUILD</b></td><TD class=xtabHL colspan=7><B>STATS</b></td><TD class=xtabHL><B>Upkeep</b></td></tr>\
	          <TR valign=bottom align=right><TD class=xtab></td><TD class=xtabHL>Food</td><TD class=xtabH>Wood</td><TD class=xtabH>Stone</td>\
	          <TD class=xtabH>Ore</td><TD class=xtabH>Pop</td><TD class=xtabHL>Might</td><TD class=xtabH>Life</td><TD class=xtabH>Atk</td><TD class=xtabH>Def</td><TD class=xtabH>Speed</td><TD class=xtabH>Range</td><TD class=xtabH>Load</td>\
	          <TD class=xtabHL>Food</td></tr>\
	          <TR style="height:1px;"><TD style="padding:0px; spacing:0px; height:1px; border-color:black; border-width: 1px; border-style: none none solid none" colspan=14></td></tr>';
		for (var ui in uW.cm.UNIT_TYPES) {
			i = uW.cm.UNIT_TYPES[ui];
			if (++rownum % 2)
				rsty = '';
			else
				rsty = ' style="background: #e8e8e8" ';
			cost = uW.unitcost['unt' + i]; //  NAME, Food, Wood, Stone, Ore, ?, IdlePop, Time
			stats = uW.unitstats['unt' + i]; //  Life, Attack, Defense, Speed, Range, Load
			food = uW.unitupkeeps[i];
			might = uW.unitmight['unt' + i];
			u += '<TR ' + rsty + 'align=right><TD class=xtab align=left><B>' + cost[0].substr(0, 16) + '</b></td><TD class=xtabL>' + cost[1] + '</td><TD class=xtab>' + cost[2] + '</td>\
	            <TD class=xtab>' + cost[3] + '</td><TD class=xtab>' + cost[4] + '</td><TD class=xtab>' + cost[6] + '</td><TD class=xtabL>' + might + '</td>\
	            <TD class=xtab>' + stats[0] + '</td><TD class=xtab>' + stats[1] + '</td><TD class=xtab>' + stats[2] + '</td><TD class=xtab>' + stats[3] + '</td>\
	            <TD class=xtab>' + stats[4] + '</td><TD class=xtab>' + stats[5] + '</td><TD class=xtabL>' + food + '</td></tr>';
		}
		u += '<TR class=xtabLine><TD colspan=14 class=xtabLine></td></tr>';
		for (k in uW.fortcost) {
			if (++rownum % 2)
				rsty = '';
			else
				rsty = ' style="background: #e8e8e8" ';
			cost = unsafeWindow.fortcost[k]; //  NAME, Food, Wood, Stone, Ore, ?, IdlePop, Time
			fi = k.substring(3);
			stats = unsafeWindow.fortstats['unt' + fi]; //  Life, Attack, Defense, Speed, Range, Load
			food = 0;
			might = fortmight['u' + fi];
			name = cost[0].replace('Defensive', '');
			name = name.replace('Wall-Mounted', '');
			u += '<TR ' + rsty + 'align=right><TD align=left class=xtab><B>' + name + '</b></td><TD class=xtabL>' + cost[1] + '</td><TD class=xtab>' + cost[2] + '</td>\
	            <TD class=xtab>' + cost[3] + '</td><TD class=xtab>' + cost[4] + '</td><TD class=xtab>' + cost[6] + '</td><TD class=xtabL>' + might + '</td>\
	            <TD class=xtab>' + stats[0] + '</td><TD class=xtab>' + stats[1] + '</td><TD class=xtab>' + stats[2] + '</td><TD class=xtab>' + stats[3] + '</td>\
	            <TD class=xtab>' + stats[4] + '</td><TD class=xtab>' + stats[5] + '</td><TD class=xtabL>' + food + '</td></tr>';
		}
		u += '<TR class=xtabLine><TD colspan=14 class=xtabLine></td></tr>';
		u += '</table></div><BR>';
		//Troop Train Estimates
		function _displayrow(name, row) {
			var tot = 0;
			style = ((rownum++ % 2) ? '' : ' style = "background: #e8e8e8"');
			u += '<TR' + style + '><TD align=right><B>' + name + '</B></td>';
			for (i = 0; i < row.length; i++) {
				u += ((row[i] == 0) ? '<td align=right><SPAN class=boldRed>0</SPAN></td>' : '<td align=right>' + addCommas(parseInt(row[i])) + '</td>');
				tot += parseInt(row[i]);
			}
			u += '<td align=right>' + addCommas(tot) + '</td></tr>';
		}
		u += '<DIV class=ptstat>TROOP TRAIN TIMES ESTIMATES</div><TABLE align=center cellpadding=1 cellspacing=0><TR align=right><TD></td>';
		infoRows = [];
		for (r = 0; r < nTroopType + 12; r++)
			infoRows[r] = [];
		for (i = 0; i < Cities.numCities; i++) {
			cityID = 'city' + Cities.cities[i].id;
			u += "<TD align=center valign=bottom width=60px><B>" + Cities.cities[i].name.substr(0, 10) + "</B></TD>";
			// getTroopDefTrainEstimates(cityID);
			infoRows[0][i] = Cities.cities[i].numCottages;
			infoRows[1][i] = Cities.cities[i].numBarracks;
			infoRows[2][i] = Cities.cities[i].foremanBasePoliticsScore;
			infoRows[3][i] = Cities.cities[i].marshallCombatScore;
			infoRows[5][i] = Cities.cities[i].stableLevel;
			infoRows[6][i] = Cities.cities[i].workshopLevel;
			for (var j = 1; j < nTroopType + 1; j++)
				if (j < 19) infoRows[j + 6][i] = ((Cities.cities[i]['Troop' + j + 'Time'] > 0) ? (3600 / Cities.cities[i]['Troop' + j + 'Time']) : 0);
				else infoRows[j + 6][i] = ((Cities.cities[i]['Troop' + (j + 2) + 'Time'] > 0) ? (3600 / Cities.cities[i]['Troop' + (j + 2) + 'Time']) : 0);
			infoRows[nTroopType + 7][i] = Cities.cities[i]['Def53Time'];
			if (infoRows[nTroopType + 7][i] > 0)
				infoRows[nTroopType + 7][i] = 3600 / infoRows[nTroopType + 7][i];
			infoRows[nTroopType + 8][i] = Cities.cities[i]['Def55Time'];
			if (infoRows[nTroopType + 8][i] > 0)
				infoRows[nTroopType + 8][i] = 3600 / infoRows[nTroopType + 8][i];
			infoRows[nTroopType + 9][i] = Cities.cities[i]['Def60Time'];
			if (infoRows[nTroopType + 9][i] > 0)
				infoRows[nTroopType + 9][i] = 3600 / infoRows[nTroopType + 9][i];
			infoRows[nTroopType + 10][i] = Cities.cities[i]['Def61Time'];
			if (infoRows[nTroopType + 10][i] > 0)
				infoRows[nTroopType + 10][i] = 3600 / infoRows[nTroopType + 10][i];
			infoRows[nTroopType + 11][i] = Cities.cities[i]['Def62Time'];
			if (infoRows[nTroopType + 11][i] > 0)
				infoRows[nTroopType + 11][i] = 3600 / infoRows[nTroopType + 11][i];
		}
		u += "<td align=center valign=bottom width=60px><b>Total</td></tr>";
		var rownum = 0;
		_displayrow("Cottages Total", infoRows[0]);
		_displayrow("Barracks Total", infoRows[1]);
		_displayrow("Foreman Politics", infoRows[2]);
		_displayrow("Marshall Combat", infoRows[3]);
		_displayrow("Stable Lvl", infoRows[5]);
		_displayrow("Workshop Lvl", infoRows[6]);
		u += "<TR><TD></TD><TD nowrap align=center colspan=" + (Cities.numCities) + "><B>Troop Hourly Production</B></TD></TR>";
		_displayrow("STroop", infoRows[7]);
		_displayrow("Militia", infoRows[8]);
		_displayrow("Scout", infoRows[9]);
		_displayrow("Pike", infoRows[10]);
		_displayrow("Sword", infoRows[11]);
		_displayrow("Archer", infoRows[12]);
		_displayrow("Cavalry", infoRows[13]);
		_displayrow("HCavalry", infoRows[14]);
		_displayrow("Wagon", infoRows[15]);
		_displayrow("Balista", infoRows[16]);
		_displayrow("Ram", infoRows[17]);
		_displayrow("Catapult", infoRows[18]);
		_displayrow("Bloodthorn", infoRows[19]);
		_displayrow("Executioner", infoRows[20]);
		_displayrow("Siege Wall", infoRows[21]);
		_displayrow("Flame Archer", infoRows[22]);
		_displayrow("Hussar", infoRows[23]);
		_displayrow("Halberdier", infoRows[24]);
		_displayrow("Onager", infoRows[25]);
		_displayrow("Saboteur", infoRows[26]);
		u += "<TR><TD></TD><TD nowrap align=center colspan=" + (Cities.numCities) + "><B>Wall Defense Hourly Production</B></TD></TR>";
		_displayrow("XBow", infoRows[nTroopType + 7]);
		_displayrow("Trebuchet", infoRows[nTroopType + 8]);
		_displayrow("Spike", infoRows[nTroopType + 9]);
		_displayrow("Trap", infoRows[nTroopType + 10]);
		_displayrow("Caltrop", infoRows[nTroopType + 11]);
		u += '</tr></table>';
		u += '<DIV class=ptstat>MISC INFO</div><TABLE><TR><TD width="200px" style="background-color:#FFFFFF; border:none">KofC client version: ' + KOCversion + '</td>';
		u += '<TD style="background-color:#FFFFFF; border:none"><INPUT id=ptButDebug type=submit name="SEED" value="DEBUG"></tr></td></table></div>';
		t.Overv.innerHTML = u;
		document.getElementById('ptButDebug').addEventListener('click', function () {
			debugWin.doit()
		}, false);
	},
	paintOverview: function () {
		var rownum = 0;
		var t = Tabs.OverView;
		clearTimeout(Tabs.OverView.displayTimer);
		t.Overv.innerHTML = null;
		t.Overv.style.maxHeight = '650px';
		t.Overv.style.overflowX = Options.overviewAllowOverflow ? 'visible' : 'scroll';
		t.Overv.style.width = Options.overviewAllowOverflow ? '' : '745px';
		t.Overv.style.maxWidth = Options.overviewAllowOverflow ? '' : '745px';

		function _row(name, row, noTotal) {
			var t = Tabs.OverView;
			if (rownum++ % 2)
				style = '';
			else
				style = ' style = "background: #e8e8e8"';
			var tot = 0;
			var m = [];
			m.push('<TR style="background: #fff" align=right');
			m.push(style);
			m.push('><TD');
			m.push(style);
			m.push('><B>');
			m.push(name);
			m.push(' &nbsp; </td>');
			if (noTotal) {
				m.push('<TD');
				m.push(style);
				m.push('> &nbsp;</td>');
			} else {
				for (i = 0; i < row.length; i++)
					tot += row[i];
				m.push('<TD style="background: #ffc">');
				if (name == 'Gold' || name == 'Food' || name == 'Wood' || name == 'Stone' || name == 'Ore' || name == 'Aetherstone')
					t.resTotal[name] = tot;
				else
					t.troopTotal[name] = tot;
				if (TEST_WIDE)
					m.push('X,');
				m.push(addCommas(tot));
				m.push('</td>');
			}
			for (i = 0; i < row.length; i++) {
				m.push('<TD');
				m.push(style);
				m.push('>');
				if (TEST_WIDE)
					m.push('X,');
				m.push(addCommas(row[i]));
				m.push('</td>');
			}
			m.push('</tr>');
			return m.join('');
		}
		//DebugTimer.start(); 
		try {
			if (Options.includeMarching)
				march = getMarchInfo();
			if (Options.includeTrainingExt)
				train = getTrainInfo();
			dt = new Date();
			dt.setTime(Seed.player.datejoinUnixTime * 1000);
			str = "<DIV id=overMainDiv style='font-size:" + Options.overviewFontSize + "px'><TABLE class=ptTabOverview cellpadding=0 cellspacing=0><TR valign=top align=right><TD width=65></td><TD width=88 style='background: #ffc'><B>TOTAL</b></td>";
			for (i = 0; i < Cities.numCities; i++) {
				str += "<TD width=81><B>" + Cities.cities[i].name.substring(0, 11) + '</b><BR>' + coordLink(Cities.cities[i].x, Cities.cities[i].y) + "<BR>" + unsafeWindow.provincenames['p' + Cities.cities[i].provId] + "</td>";
			}
			if (Options.includeMarching)
				str += '<TD width=81><B>Marching</b></td>';
			if (Options.includeTrainingExt)
				str += '<TD width=81><B>Training</b></td>';
			str += "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>";
			str += '<TR valign=top align=right><TD><input id=ptpostres style="font-size:' + Options.overviewFontSize + 'px" type="submit" value="Post To Chat"></input></td><TD style=\'background: #ffc\'></td>';
			for (i = 0; i < Cities.numCities; i++) {
				cityID = 'city' + Cities.cities[i].id;
				Gate = parseInt(Seed.citystats[cityID].gate);
				if (Gate == 0)
					str += '<TD>Hiding</td>';
				else
					str += '<TD><SPAN class=boldRed>Defending</span></td>';
			}
			rows = [];
			rows[0] = [];
			for (i = 0; i < Cities.numCities; i++) {
				cityID = 'city' + Cities.cities[i].id;
				rows[0][i] = parseInt(Seed.citystats[cityID].gold[0]);
			}
			for (r = 1; r < 5; r++) {
				rows[r] = [];
				for (i = 0; i < Cities.numCities; i++) {
					cityID = 'city' + Cities.cities[i].id;
					rows[r][i] = parseInt(Seed.resources[cityID]['rec' + r][0] / 3600);
				}
			}
			rows[5] = [];
			for (i = 0; i < Cities.numCities; i++) { //Aetherstone
				cityID = 'city' + Cities.cities[i].id;
				rows[5][i] = parseInt(Seed.resources[cityID]['rec5'][0]);
			}
			if (Options.includeMarching) {
				for (var i = 0; i < 5; i++)
					rows[i][Cities.numCities] = march.resources[i]; //Aetherstone does not show up in march info
			}
			str += _row('Gold', rows[0]);
			str += _row('Food', rows[1]);
			str += _row('Wood', rows[2]);
			str += _row('Stone', rows[3]);
			str += _row('Ore', rows[4]);
			str += _row('Aetherstone', rows[5]);
			str += '<TR><td><input id=ptposttroop style="font-size:' + Options.overviewFontSize + 'px" type="submit" value="Post To Chat"></input></td><TD colspan=11><BR></td></tr>';
			for (r = 1; r < nTroopType + 1; r++) {
				rows[r] = [];
				for (i = 0; i < Cities.numCities; i++) {
					cityID = 'city' + Cities.cities[i].id;
					if (r < 19) rows[r][i] = parseIntNan(Seed.units[cityID]['unt' + r]);
					else rows[r][i] = parseIntNan(Seed.units[cityID]['unt' + (r + 2)]);
				}
			}
			var colnum = Cities.numCities;
			if (Options.includeMarching) {
				for (var i = 1; i < nTroopType + 1; i++) {
					if (i < 19) rows[i][colnum] = parseIntNan(march.marchUnits[i]);
					else rows[i][colnum] = parseIntNan(march.marchUnits[i + 2]);
				}
				colnum++;
			}
			if (Options.includeTrainingExt) {
				for (var i = 1; i < nTroopType + 1; i++) {
					if (i < 19) rows[i][colnum] = parseIntNan(train.trainUnts[i]);
					else rows[i][colnum] = parseIntNan(train.trainUnts[i + 2]);
				}
			}
			if (Options.includeTraining) {
				var q = Seed.queue_unt;
				for (i = 0; i < Cities.numCities; i++) {
					q = Seed.queue_unt['city' + Cities.cities[i].id];
					if (q && q.length > 0) {
						for (qi = 0; qi < q.length; qi++)
							rows[q[qi][0]][i] += parseIntNan(q[qi][1]);
					}
				}
			}
			rownum = 0;
			str += _row('SupTrp', rows[1]);
			str += _row('Militia', rows[2]);
			str += _row('Scout', rows[3]);
			str += _row('Pike', rows[4]);
			str += _row('Sword', rows[5]);
			str += _row('Archer', rows[6]);
			str += _row('Cavalry', rows[7]);
			str += _row('Heavy', rows[8]);
			str += _row('Wagon', rows[9]);
			str += _row('Ballista', rows[10]);
			str += _row('Ram', rows[11]);
			str += _row('Catapult', rows[12]);
			str += _row('Bloodthorn', rows[13]);
			str += _row('Executioner', rows[14]);
			str += _row('Siege Wall', rows[15]);
			str += _row('Flame Archer', rows[16]);
			str += _row('Hussar', rows[17]);
			str += _row('Halberdier', rows[18]);
			str += _row('Onager', rows[19]);
			str += _row('Saboteur', rows[20]);
			str += '<TR><TD colspan=11><BR></td></tr>';
			row = [];
			for (i = 0; i < Cities.numCities; i++) {
				var rp = getResourceProduction(Cities.cities[i].id);
				var usage = parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][3]);
				var bp = uW.cm.Resources.getProductionBase(1, Cities.cities[i].id);
				//
				// adjust for throne room bonuses
				var trupkeepreduce = 0;
				trupkeepreduce = Math.min(equippedthronestats(79), 33);
				var trprodres = equippedthronestats(82);
				var trprod = [0, 0, 0, 0, 0];
				trprod[1] = Math.min(equippedthronestats(83) + trprodres, 2000);
				var upkbase = uW.cm.Resources.getUpkeep(1, Cities.cities[i].id) / (1 - trupkeepreduce / 100);
				usage = parseInt(usage - upkbase * trupkeepreduce / 100);
				row[i] = parseInt(rp[1] - usage + bp * trprod[1] / 100);
			}
			str += _row('Food +/-', row, true);
			for (i = 0; i < Cities.numCities; i++) {
				if (row[i] >= 0)
					row[i] = '----';
				else {
					var timeLeft = parseInt(Seed.resources["city" + Cities.cities[i].id]['rec1'][0]) / 3600 / (0 - row[i]) * 3600;
					if (timeLeft > 86313600)
						row[i] = '----';
					else {
						if (Options.enableFoodWarn && timeLeft < (Options.foodWarnHours * 3600))
							row[i] = '<SPAN class=whiteOnRed>' + timestrShort(timeLeft) + '</span>';
						else
							row[i] = timestrShort(timeLeft);
					}
				}
			}
			str += _row('Food left', row, true);
			row = [];
			for (i = 0; i < Cities.numCities; i++) {
				var cityAscended = [];
				cityAscended[i] = false;
				if (Seed.cityData.city[Cities.cities[i].id].isPrestigeCity) cityAscended[i] = true;
				//if (cityAscended[i]){
				var baseValsByLevel = {
					1: 100000,
					2: 200000,
					3: 300000,
					4: 400000,
					5: 500000,
					6: 600000,
					7: 700000,
					8: 800000,
					9: 900000,
					10: 1000000,
					11: 5000000,
					12: 50000000
				}
				var baseSthProt = [];
				for (k in Seed.buildings['city' + Cities.cities[i].id]) {
					if (Seed.buildings['city' + Cities.cities[i].id][k][0] == 9) {
						baseSthProt[i] = baseValsByLevel[Seed.buildings['city' + Cities.cities[i].id][k][1]];
					}
				}
				//tch14 = shrinking powder..
				var SthPrtResearch = parseInt(Seed.tech.tch14)
				var TRStHsBoost = Math.min(equippedthronestats(89), 1250);
				var totalSthPrt = []
				var researchToApply = ((SthPrtResearch / 10) + 1)
				var TRBoostToApply = ((TRStHsBoost / 100) + 1)
				if (TRStHsBoost == 0) TRStHsBoost = 1
				totalSthPrt[i] = addCommas(parseInt((baseSthProt[i] * researchToApply) * TRBoostToApply))
				row[i] = totalSthPrt[i]
				/*}else{
			row[i] = 'Not Coded';
		} // if ascended */
			}
			str += _row('StrHse Prot', row, true)
			str += '<TR><TD><BR></td></tr>';
			for (i = 0; i < Cities.numCities; i++) {
				var totWilds = 0;
				dat = Seed.wilderness['city' + Cities.cities[i].id];
				if (dat != null && matTypeof(dat) == 'object')
					for (k in dat)
				++totWilds;
				var castle = parseInt(Seed.buildings['city' + Cities.cities[i].id].pos0[1]);
				if (castle == 11) castle = 12;
				else if (castle == 12) castle = 14;
				if (totWilds < castle)
					row[i] = '<SPAN class=boldRed><B>' + totWilds + '/' + castle + '</b></span>';
				else
					row[i] = totWilds + '/' + castle;
			}
			str += _row('#Wilds', row, true);
			row = [];
			for (i = 0; i < Cities.numCities; i++) {
				totKnights = 0;
				dat = Seed.knights['city' + Cities.cities[i].id];
				for (k in dat)
				++totKnights;
				row[i] = totKnights;
			}
			str += _row('#Knights', row, true);
			var now = unixTime();
			var row = [];
			var rowsp = [];
			var rowrev = [];
			for (i = 0; i < Cities.numCities; i++) {
				var totTime = 0;
				var totTime2 = 0;
				var q = Seed.queue_unt['city' + Cities.cities[i].id];
				if (q != null && q.length > 0)
					totTime = q[q.length - 1][3] - now;
				if (totTime < 0)
					totTime = 0;
				row[i] = 0;
				rowsp[i] = 0;
				if (q != null && q.length > 0) {
					if (q[q.length - 1][7]) {
						row[i] = 0;
						if (totTime < 3600)
							rowsp[i] = '<SPAN class=boldRed><B>' + timestr(totTime) + '</b></span>';
						else
							rowsp[i] = timestr(totTime);
					} else {
						if (totTime < 3600)
							row[i] = '<SPAN class=boldRed><B>' + timestr(totTime) + '</b></span>';
						else
							row[i] = timestr(totTime);
						if (q.length > 1) {
							for (j = 2; j < q.length + 1; j++) {
								if (q[q.length - j][7]) {
									totTime2 = q[q.length - j][3] - now;
									if (totTime2 < 0)
										totTime2 = 0;
									if (totTime2 < 3600)
										rowsp[i] = '<SPAN class=boldRed><B>' + timestr(totTime2) + '</b></span>';
									else
										rowsp[i] = timestr(totTime2);
									break;
								}
							}
						}
					}
				}
				var qr = Seed.queue_revive['city' + Cities.cities[i].id];
				if (qr != null && qr.length > 0)
					totTime = qr[qr.length - 1][3] - now;
				if (totTime < 0)
					totTime = 0;
				rowrev[i] = 0;
				if (qr != null && qr.length > 0) {
					if (totTime < 3600)
						rowrev[i] = '<SPAN class=boldRed><B>' + timestr(totTime) + '</b></span>';
					else
						rowrev[i] = timestr(totTime);
				}
			}
			str += _row('TroopQ', row, true);
			str += _row('SpecialTroopQ', rowsp, true);
			str += _row('ReviveQ', rowrev, true);
			var row = [];
			for (i = 0; i < Cities.numCities; i++) {
				var wall = {};
				getWallInfo(Cities.cities[i].id, wall);
				var totTime = 0;
				var q = Seed.queue_fort['city' + Cities.cities[i].id];
				if (q != null && q.length > 0)
					totTime = q[q.length - 1][3] - now;
				if (totTime < 0)
					totTime = 0;
				if (totTime < 1 && (wall.wallSpaceUsed < wall.wallSpace - 4 || wall.fieldSpaceUsed < wall.fieldSpace - 4))
					row[i] = '<SPAN class=boldRed><B>' + timestr(totTime) + '</b></span>';
				else
					row[i] = timestr(totTime);
			}
			str += _row('WallQue', row, true);
			str += '<TR><TD class=xtab></td><TD class=xtab colspan=4><BR><INPUT type=CHECKBOX id=idCheck' + (Options.includeMarching ? ' CHECKED' : '') + '>Include Marching Troops/Resources</td></tr>';
			str += '<TR><TD class=xtab></td><TD class=xtab colspan=4><INPUT type=CHECKBOX id=ptoverIncTrain' + (Options.includeTraining ? ' CHECKED' : '') + '>Include troops in training in cities</td></tr>';
			str += '<TR><TD class=xtab></td><TD class=xtab colspan=4><INPUT type=CHECKBOX id=ptoverIncTrainExt' + (Options.includeTrainingExt ? ' CHECKED' : '') + '>Include troops in training total</td></tr>';
			str += '<TR><TD class=xtab></td><TD class=xtab colspan=4><INPUT type=CHECKBOX id=ptOverOver' + (Options.overviewAllowOverflow ? ' CHECKED' : '') + '>Allow width overflow \
         &nbsp; &nbsp; FONT SIZE: ' + htmlSelector({
				9: 9,
				10: 10,
				11: 11,
				12: 12
			}, Options.overviewFontSize, 'id=ptoverfont') + '</td></tr><BR>';
			str += "</table></div>";
			str += 'Koc Power Tools Version:' + Version;
			t.Overv.innerHTML = str;
			document.getElementById('idCheck').addEventListener('click', e_clickEnableMarch, false);
			document.getElementById('ptoverIncTrain').addEventListener('click', e_clickEnableTraining, false);
			document.getElementById('ptoverIncTrainExt').addEventListener('click', e_clickEnableTrainingExt, false);
			document.getElementById('ptOverOver').addEventListener('click', e_allowWidthOverflow, false);
			document.getElementById('ptoverfont').addEventListener('change', e_fontSize, false);
			document.getElementById('ptpostres').addEventListener('click', postRes, false);
			document.getElementById('ptposttroop').addEventListener('click', postTroop, false);
			//DebugTimer.display ('Draw Overview');    
		} catch (e) {
			new CdialogCancelContinue('<PRE>' + inspect(e, 3, 1) + '</pre>', null, null, true);
			t.Overv.innerHTML = '<PRE>' + e.name + ' : ' + e.message + ' on ' + e.lineNumber + '</pre>';
		}
		t.displayTimer = setTimeout(t.paintOverview, 5000);

		function e_clickEnableMarch() {
			var t = Tabs.OverView;
			Options.includeMarching = document.getElementById('idCheck').checked;
			t.paintOverview();
		}

		function e_clickEnableTraining() {
			var t = Tabs.OverView;
			Options.includeTraining = document.getElementById('ptoverIncTrain').checked;
			t.paintOverview();
		}

		function e_clickEnableTrainingExt() {
			var t = Tabs.OverView;
			Options.includeTrainingExt = document.getElementById('ptoverIncTrainExt').checked;
			t.paintOverview();
		}

		function e_fontSize(evt) {
			document.getElementById('ptOverOutput').style.fontSize = evt.target.value + 'px';
			Options.overviewFontSize = evt.target.value;
			t.paintOverview();
		}

		function e_allowWidthOverflow(evt) {
			var t = Tabs.OverView;
			var tf = document.getElementById('ptOverOver').checked;
			Options.overviewAllowOverflow = tf;
			if (tf)
				t.Overv.style.overflowX = 'visible';
			else
				t.Overv.style.overflowX = 'auto';
			t.paintOverview();
		}

		function postRes() {
			var t = Tabs.OverView;
			var msg = ':::. Total Resources |'
			for (var key in t.resTotal) {
				msg += '||' + key + ': ' + addCommas(t.resTotal[key]);
			}
			msg += '|';
			var automsg = sendChat('/a ' + msg);
		}

		function postTroop() {
			var t = Tabs.OverView;
			var msg = ':::. Total Troops |'
			for (var key in t.troopTotal) {
				msg += '||' + key + ': ' + addCommas(t.troopTotal[key]);
			}
			msg += '|';
			var automsg = sendChat('/a ' + msg);
		}
	},
};
/*************** March Tab **********/
Tabs.Attaque = {
	cont: null,
	displayTimer: null,
	tabLabel: 'March',
	state: null,
	curTabBut: null,
	curTabName: null,
	BOAttackTimer: null,
	sourceCity: {},
	destinationCity: {},
	rows: [],
	iused: new Array(),
	init: function (div) {
		var t = Tabs.Attaque;
		t.cont = div;
		t.state = null;
		clearTimeout(t.displayTimer);
	},
	getContent: function () {
		var t = Tabs.Attaque;
		return t.cont;
	},
	hide: function () {
		var t = Tabs.Attaque;
		t.state = null;
		clearTimeout(t.displayTimer);
	},
	show: function () {
		var t = Tabs.Attaque;
		setTimeout(t.Refreshtroops, 10000);
		var rownum = 0;
		var ModelCity = {};
		if (t.state == null) {
			m = "<DIV class=ptstat><b>QUICK MARCH TOOL</b></div>";
			m += "<div id='statpourRAA'></div>";
			m += "<TABLE width=600 class=ptTab border=0 align=center>\
           <tr><td><INPUT type=checkbox id=ptmarch_autoknight " + (Options.marchautoknight ? 'CHECKED' : '') + " /> Auto select knight</td></tr>\
           <tr><td colspan=4 align=center><input type=button id=REEaction value='Scout'>&nbsp;<input type=button id=RAAaction value='Attack'>&nbsp<input type=button id=RARaction value='Reassign'>&nbsp;<input type=button id=RENaction value='Reinforce'>&nbsp;<input type=button id=RENBaction value='Reinforce + Max Food'></td></tr><tr align=center valign=top><td width=130><b><u>Source</b></u><br><span id=RAAsrcRptspeedcity></span></td>\
           <td><b><u>Destination</b></u><br>X:<input type=text id=RAAtypetrpx size=3>&nbsp;Y:<input type=text id=RAAtypetrpy size=3><br><a href='javascript:void(0);' id='BOchargelistelieux'>Fetch Members</a> : <select id='listeFavori'></select></td>\
           <td><b><u>Distance</u></b><br><span id='BOEstimationD'>&nbsp;</span><td><b><u>Closest City</u></b><br><span id=BOVilleProche></span>\
           </tr><tr align=center valign=top>\
           <td colspan=4 align=left><table border=0 bordercolor=black cellspacing=0 cellpadding=0 width=100% style='text-align:center'><tr><td rowspan=" + nTroopType + 1 + "><div id=RAAstatsource></div></td><td colspan=2><a href='javascript:void(0)' id=BO_RAZ_Units title='Clear' >Units Selected</a></td><td>Attack Time</td><td>Reinforce Time</td></tr>";
			for (var ui in uW.cm.UNIT_TYPES) {
				r = uW.cm.UNIT_TYPES[ui];
				m += '<tr><td align=right><img height=20 title="' + unsafeWindow.unitcost['unt' + r][0] + '" alt="' + unsafeWindow.unitcost['unt' + r][0] + '" src=https://kabam1-a.akamaihd.net/silooneofcamelot//fb/e2/src/img/units/unit_' + r + '_30.jpg></td><td align=left><input style="border:1px solid black;height:16px;font-size:11px;" id="RAAnbunit' + r + '" type=text size=7 value="0" ></td><td><span id="BOEstimationTT' + r + '">&nbsp;</span></td><td><span id="BOEstimationTZ' + r + '">&nbsp;</span></td></tr>';
			}
			var itemlist = [55, 57, 931, 932];
			var BOitems = "";
			for (var i = 0; i < itemlist.length; i++) {
				BOitems += "<img src='https://kabam1-a.akamaihd.net/silooneofcamelot//fb/e2/src/img/items/30/" + itemlist[i] + ".jpg' /><input type=checkbox id='BOitem_" + itemlist[i] + "'><span id='BOitemSpan_" + itemlist[i] + "'>" + unsafeWindow.ksoItems[itemlist[i]].count + "</span>&nbsp;";
			}
			m += "</table></td></tr>\
              <tr><td colspan=4>Knight : <SELECT id='RAApiKnight' type=list></select>  Champion : <SELECT id='RAApiChampion' type=list></select> (use only for Attack) <br>" + BOitems + "</td></tr></table>\
              <DIV class=ptstat>Saved Unit Configuration :</div><TABLE><tr><td colspan=2><select id=BO_AT_Fav></select><input type=button value='Reset' id=BO_AT_Fav_Sup><input type=button value='Reset All' id=BO_AT_Fav_RESET></td><td colspan=2>New : <input type=type id=BO_AT_Fav_Nom size=10 maxlength=12>&nbsp;<input type=button value='Save Troops' id=BO_AT_Fav_ajou>\
              <tr><td colspan=4><div id=ptRAAStatus style='overflow-y:auto; max-height:50px; height: 50px;'></div></td></tr></table>\
              <DIV class=ptstat>Auto Attack - Work in Progress</div><table></tr><tr><td><input type=button id='BOActiveAttack' value='ACTIVER : OFF' ></td><td colspan=3><span id='BOCompAttack'></span></tr>\
              <tr><td><b>Heure arriv&eacute;e :</b> <input type=text size=7 id='BOHorloge' value='" + Options.AttackHorloge + "'></td><td><input type=button value='Enregistrer' id='BOSaveAttack'></td><td><input type=button value='Editer l\'attaque' id='BOEditAttack' disabled></td></tr>\
              <tr><td colspan=4><span id='BOAttackProg'></span></td></tr></table>";
			t.cont.innerHTML = m;
			t.statpourRAA = ById('statpourRAA');
			//Gestion des favoris  
			t.Favoris = ById('BO_AT_Fav');

			function metajourfavori() {
				t.Favoris.innerHTML = "<option value=''>...</option>";
				var lisf = Options.AttackFav;
				for (var m in lisf) {
					var lis = lisf[m];
					t.Favoris.innerHTML += "<option value='" + m + "'>" + lis[0] + "</option>";
				}
			}
			ById("ptmarch_autoknight").addEventListener('click', function () {
				Options.marchautoknight = this.checked;
				saveOptions();
				t.show();
			}, false);
			ById("BO_AT_Fav_RESET").addEventListener('click', function () {
				Options.AttackFav = {};
				saveOptions();
				metajourfavori();
			}, false);
			ById("BO_AT_Fav_Sup").addEventListener('click', function () {
				numfav = ById("BO_AT_Fav").value;
				if (numfav != "") {
					Options.AttackFav[numfav] = {};
					delete Options.AttackFav[numfav];
					//Options.AttackFav=unset(Options.AttackFav, numfav);
					saveOptions();
					metajourfavori();
				}
			}, false);
			ById("BO_RAZ_Units").addEventListener('click', function () {
				for (var ui in uW.cm.UNIT_TYPES) ById("RAAnbunit" + uW.cm.UNIT_TYPES[ui]).value = 0;
			}, false);
			ById("BO_AT_Fav_ajou").addEventListener('click', function () {
				if (ById("BO_AT_Fav_Nom").value == "") {
					alert("Please fill in a name!");
					return;
				}
				var a = ById("BO_AT_Fav_Nom").value;
				Options.AttackFav[a] = {};
				var lisf = Options.AttackFav[a];
				lisf[0] = ById("BO_AT_Fav_Nom").value;
				for (var ui in uW.cm.UNIT_TYPES) lisf[uW.cm.UNIT_TYPES[ui]] = ById("RAAnbunit" + uW.cm.UNIT_TYPES[ui]).value;
				ById("BO_AT_Fav_Nom").value = "";
				saveOptions();
				metajourfavori();
			}, false);
			ById("BO_AT_Fav").addEventListener('change', function () {
				numfav = ById("BO_AT_Fav").value;
				if (numfav == "") {
					for (var ui in uW.cm.UNIT_TYPES) ById("RAAnbunit" + uW.cm.UNIT_TYPES[ui]).value = 0;
				} else {
					var lisf = Options.AttackFav[numfav];
					for (var m in lisf) {
						if (m > 0)
							if (ById("RAAnbunit" + m)) ById("RAAnbunit" + m).value = lisf[m];
					}
				}
			}, false);
			// Fin gestion des favoris
			ById("BOitem_55").addEventListener('click', function () {
				ById("BOitem_57").checked = false;
				t.estimerRes();
			}, false);
			ById("BOitem_57").addEventListener('click', function () {
				ById("BOitem_55").checked = false;
				t.estimerRes();
			}, false);
			t.statutRAA = ById('ptRAAStatus');
			t.destinationCityx = ById('RAAtypetrpx');
			t.destinationCityy = ById('RAAtypetrpy');
			t.destinationCityx.value = Options.Xrenfort;
			t.destinationCityy.value = Options.Yrenfort;
			if (ById('maparea_map').style.display != "none") {
				t.destinationCityx.value = ById('mapXCoor').value;
				t.destinationCityy.value = ById('mapYCoor').value;
			}
			t.listeFavoris = ById('listeFavori');
			t.listeFavoris.addEventListener('change', t.SelectFavoris, false);
			t.chargelistelieux = ById('BOchargelistelieux');
			t.chargelistelieux.addEventListener('click', t.chercherFavoris, false);
			t.actionREN = ById('RENaction');
			t.actionRENB = ById('RENBaction');
			t.actionREE = ById('REEaction');
			t.actionRAA = ById('RAAaction');
			t.actionRAR = ById('RARaction');
			t.actionREN.addEventListener('click', function () {
				t.clickATTAQUEDo(2, 0);
			}, false);
			t.actionRAA.addEventListener('click', function () {
				t.clickATTAQUEDo(4, 0);
			}, false);
			t.actionRAR.addEventListener('click', function () {
				t.clickATTAQUEDo(5, 0);
			}, false);
			t.actionRENB.addEventListener('click', function () {
				t.clickATTAQUEDo(2, 1);
			}, false);
			t.actionREE.addEventListener('click', function () {
				t.clickATTAQUEDo(3, 0);
			}, false);
			t.destinationCityx.addEventListener('change', function () {
				t.estimerRes();
			}, false);
			t.destinationCityy.addEventListener('change', function () {
				t.estimerRes();
			}, false);
			var dcp0 = new CdispCityPicker('ptRAA0', ById('RAAsrcRptspeedcity'), false, t.clickRAACitySourceSelect, Cities.byID[unsafeWindow.currentcityid].idx);
			t.estimerRes();
			t.BOAttackProg = ById('BOAttackProg');
			t.BOHorloge = ById('BOHorloge');
			t.BOSaveAttack = ById('BOSaveAttack');
			t.BOEditAttack = ById('BOEditAttack');
			t.BOCompAttack = ById('BOCompAttack');
			t.BOActiveAttack = ById('BOActiveAttack');
			t.BOActiveAttack.addEventListener('click', t.AutoattackOnOff, false);
			t.BOSaveAttack.addEventListener('click', function () {
				var itemlist = [55, 57, 931, 932];
				for (var i = 0; i < itemlist.length; i++) {
					ById('BOitemSpan_' + itemlist[i]).checked = false;
				}
				t.enregistreAttack();
			}, false);
			if (Options.AttackCibleX != 0 && Options.AttackCibleY != 0) {
				t.BOEditAttack.disabled = false;
			}
			t.BOEditAttack.addEventListener('click', function () {
				t.destinationCityx.value = Options.AttackCibleX;
				t.destinationCityy.value = Options.AttackCibleY;
				ById("RAApiKnight").value = Options.AttackKnight;
				ById("RAApiChampion").value = Options.AttackChampion;
				nHtml.Click(ById("ptRAA0_" + Cities.byID[Options.AttackFromCity].idx));
				for (var ui in uW.cm.UNIT_TYPES) ById("RAAnbunit" + uW.cm.UNIT_TYPES[ui]).value = Options.AttackUnits[parseInt(uW.cm.UNIT_TYPES[ui]) - 1];
			}, false);
			metajourfavori();
			if (Options.AttackOnOff) {
				t.BOActiveAttack.value = 'ACTIVER : ON';
				t.activeAttack();
			}
			t.clickRAACitySourceSelect(t.sourceCity);
			var closestNum = t.getclosestcity();
			t.dcp1 = new CdispCityPicker('ptmarch_citydest', ById('BOVilleProche'), false, t.estimerRes, null).bindToXYboxes(ById("RAAtypetrpx"), ById("RAAtypetrpy"));
		}
	},
	getclosestcity: function () {
		var t = Tabs.Attaque;
		var x1 = parseInt(t.sourceCity.x);
		var x2 = parseInt(t.destinationCityx.value);
		var y1 = parseInt(t.sourceCity.y);
		var y2 = parseInt(t.destinationCityy.value);
		var dist = distance(x1, y1, x2, y2);
		var closestDist = 999999;
		var closestLoc = null;
		var closestNum = 1;
		for (var c = 0; c < Cities.numCities; c++) {
			var city = Cities.cities[c];
			var dist = distance(city.x, city.y, x2, y2);
			if (dist < closestDist) {
				closestDist = dist;
				closestLoc = city.x + ',' + city.y;
				closestNum = c;
			}
		}
		return closestNum;
	},
	AutoattackOnOff: function () {
		// click click sur le bouton Activer le compte Ãƒ  rebour !
		var t = Tabs.Attaque;
		t.BOCompAttack.innerHTML = '';
		clearTimeout(t.BOAttackTimer);
		if (t.BOActiveAttack.value == 'ACTIVER : OFF') {
			t.BOActiveAttack.value = 'ACTIVER : ON';
			Options.AttackOnOff = true;
			saveOptions();
			t.activeAttack();
		} else {
			Options.AttackOnOff = false;
			saveOptions();
			t.BOActiveAttack.value = 'ACTIVER : OFF';
		}
	},
	activeAttack: function () {
		var t = Tabs.Attaque;
		clearTimeout(t.BOAttackTimer);
		if (Options.AttackGoHorloge) {
			var depart = new Date()
			depart.setTime(Options.AttackGoHorloge);
			var now = unixTime() * 1000;
			if (now >= Options.AttackGoHorloge) {
				t.BOCompAttack.innerHTML = '<center><font color=red>LANCEMENT ATTAQUE EFFECTUE</font></center>';
				t.destinationCityx.value = Options.AttackCibleX;
				t.destinationCityy.value = Options.AttackCibleY;
				ById("RAApiKnight").value = Options.AttackKnight;
				ById("RAApiChampion").value = Options.AttackChampion;
				nHtml.Click(ById("ptRAA0_" + Cities.byID[Options.AttackFromCity].idx));
				for (var ui in uW.cm.UNIT_TYPES) ById("RAAnbunit" + uW.cm.UNIT_TYPES[ui]).value = Options.AttackUnits[parseInt(uW.cm.UNIT_TYPES[ui]) - 1];
				t.clickATTAQUEDo(4, 0);
				clearTimeout(t.BOAttackTimer);
				Options.AttackGoHorloge = null;
				saveOptions();
			}
			if (now > depart.getTime()) {
				t.BOCompAttack.innerHTML = '<center><font color=red>IMPOSSIBLE</font></center>';
				clearTimeout(t.BOAttackTimer);
				Options.AttackGoHorloge = null;
				saveOptions();
				return false;
			}
			t.BOAttackTimer = setTimeout(function () {
				var depart = new Date();
				depart.setTime(Options.AttackGoHorloge);
				var now = unixTime() * 1000;
				var tempsrestant = depart.getTime() - now;
				t.BOCompAttack.innerHTML = '<center><font color=red><b>ATTAQUE DANS ' + timestr(tempsrestant / 1000) + '</b></font></center>';
				t.activeAttack();
			}, 1000);
		}
	},
	enregistreAttack: function () {
		var t = Tabs.Attaque;
		if (t.BOHorloge.value.match("^[0-9]{2}:[0-9]{2}:[0-9]{2}$")) {
			var horloge = t.BOHorloge.value;
			Options.AttackHorloge = horloge;
			var ndate = new Date();
			ndate.setHours(horloge.substr(0, 2));
			ndate.setMinutes(horloge.substr(3, 2));
			ndate.setSeconds(0);
			var atunits = new Array();
			for (var ui in uW.cm.UNIT_TYPES) atunits.push(parseInt(ById("RAAnbunit" + uW.cm.UNIT_TYPES[ui]).value));
			Options.AttackUnits = atunits;
			Options.AttackFromCity = t.sourceCity.id;
			Options.AttackKnight = ById("RAApiKnight").value;
			Options.AttackChampion = ById("RAApiChampion").value;
			Options.AttackCibleX = t.destinationCityx.value;
			Options.AttackCibleY = t.destinationCityy.value;
			var x1 = parseInt(t.sourceCity.x);
			var x2 = parseInt(t.destinationCityx.value);
			var y1 = parseInt(t.sourceCity.y);
			var y2 = parseInt(t.destinationCityy.value);
			var dist = distance(x1, y1, x2, y2);
			var tempplusgrand = 0;
			for (var ui in uW.cm.UNIT_TYPES) {
				r = uW.cm.UNIT_TYPES[ui];
				if (parseInt(ById("RAAnbunit" + r).value) > 0) {
					var m = estETA(dist, r, t.sourceCity.id);
					if (tempplusgrand < m.ETA) tempplusgrand = m.ETA;
				}
			}
			var departtime = ndate.getTime() - (tempplusgrand * 1000);
			var depart = new Date()
			depart.setTime(departtime);
			var now = unixTime() * 1000;
			if (now > depart.getTime()) {
				t.BOAttackProg.innerHTML = "Depart impossible !";
				return false;
			}
			Options.AttackGoHorloge = depart.getTime();
			saveOptions();
			t.BOAttackProg.innerHTML = "Attaque sur " + Options.AttackCibleX + "," + Options.AttackCibleY + " enregistr&eacute;e";
			t.BOEditAttack.disabled = false;
		} else {
			t.BOAttackProg.innerHTML = "Mauvais format de l'horloge.";
		}
	},
	clickATTAQUEDo: function (typemarche, bouffe) {
		var t = Tabs.Attaque;
		var totalunit = 0;
		if (typemarche == 3 && ById("RAAnbunit3").value == 0) ById("RAAnbunit3").value = 1;
		for (var ui in uW.cm.UNIT_TYPES) {
			r = uW.cm.UNIT_TYPES[ui];
			if (typemarche == 3 && r != 3) {
				ById("RAAnbunit" + r).value = 0;
			}
			if (parseInt(ById("RAAnbunit" + r).value) > parseInt(ById("RAAdestunit" + r).value)) {
				ById("RAAnbunit" + r).style.backgroundColor = "red";
				return false;
			}
			totalunit = totalunit + parseInt(ById("RAAnbunit" + r).value);
			ById("RAAnbunit" + r).style.backgroundColor = "";
		}
		var errMsg = "";
		if (isNaN(t.destinationCityx.value) || t.destinationCityx.value < 0 || t.destinationCityx.value > 749)
			errMsg = "X coordinates must be between 0 and 749<BR>";
		if (isNaN(t.destinationCityy.value) || t.destinationCityy.value < 0 || t.destinationCityy.value > 749)
			errMsg += "Y coordinates must be between 0 and 749<br>";
		if (ById("RAApiKnight").value == 0 && typemarche == 4) {
			errMsg += "No knight selected!<BR>";
		}
		if (errMsg != "") {
			t.statutRAA.innerHTML = "<FONT COLOR=#550000>" + errMsg + "</font>";
			return;
		}
		var x = t.destinationCityx.value;
		var y = t.destinationCityy.value;
		// On sauvegardes les coordonnes en cas de F5
		t.SaveCoordsOptions(x, y);
		// Les objets pour l'attaque !
		var e = 1;
		var f = unsafeWindow.unixtime();
		if (Seed.playerEffects.aurasExpire) {
			if (Seed.playerEffects.aurasExpire > f) {
				e = 1.15
			}
		}
		if (Seed.playerEffects.auras2Expire) {
			if (Seed.playerEffects.auras2Expire > f) {
				e = 1.3
			}
		}
		var l_elem = ById("BOitem_931");
		if (l_elem && l_elem.checked && parseInt(Seed.items["i931"]) > 0) {
			e += 0.25;
		}
		var l_elem = ById("BOitem_932");
		if (l_elem && l_elem.checked && parseInt(Seed.items["i932"]) > 0) {
			e += 0.5;
		}
		var trmarchsizebuff = Math.floor(equippedthronestats(66));
		if (trmarchsizebuff > unsafeWindow.cm.thronestats.boosts.MarchSize.Max) trmarchsizebuff = unsafeWindow.cm.thronestats.boosts.MarchSize.Max;
		if (trmarchsizebuff > 0)
		//		e+=(trmarchsizebuff/100);
			e *= (1 + trmarchsizebuff / 100);
		if (unsafeWindow.seed.cityData.city[t.sourceCity.id].isPrestigeCity) {
			var b = unsafeWindow.seed.cityData.city[t.sourceCity.id].prestigeInfo.prestigeLevel;
			var r = unsafeWindow.cm.WorldSettings.getSetting("ASCENSION_RALLYPOINT_BOOST"),
				m = JSON.parse(r),
				u = m.values[b - 1][1],
				k = parseFloat(u);
			e *= k
			if (unsafeWindow.seed.cityData.city[t.sourceCity.id].prestigeInfo.blessings.indexOf(207) != -1) e *= 1.1;
		}
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		if (totalunit == 0) {
			t.statutRAA.innerHTML = '<FONT COLOR=#550000>You have no available units!</font>';
			return;
		}
		var niveauPointRall = parseInt(getCityBuilding(t.sourceCity.id, 12).maxLevel); // 12=Point de ralliement
		var maxtroupe = Math.round(niveauPointRall * 10000 * e - 0.001);
		if (niveauPointRall == 11) maxtroupe = Math.round(150000 * e - 0.001);
		if (niveauPointRall == 12) maxtroupe = Math.round(200000 * e - 0.001);
		if (totalunit > maxtroupe) {
			t.statutRAA.innerHTML = '<FONT COLOR=#550000>You can only send ' + maxtroupe + ' units.</font>';
			return;
		}
		var iused = new Array();
		var itemlist = [55, 57, 931, 932];
		for (var i = 0; i < itemlist.length; i++) {
			var l_elem = ById("BOitem_" + itemlist[i]);
			if (l_elem && l_elem.checked && parseInt(Seed.items["i" + itemlist[i]]) > 0) {
				iused.push(itemlist[i]);
			}
		}
		var res = 0;
		if (bouffe == 1) {
			for (var ui in uW.cm.UNIT_TYPES) {
				i = uW.cm.UNIT_TYPES[ui];
				res += parseInt(unsafeWindow.unitstats['unt' + i][5] * ById("RAAnbunit" + i).value * (1 + (0.10 * Seed.tech.tch10) + Math.min(equippedthronestats(6) / 100, 6.25)));
			}
		}
		params.items = iused.join(",");
		params.cid = t.sourceCity.id;
		params.type = typemarche; // 5 = REASSIGNER - 4 = ATTAQUE - 2 = RENFORCER
		params.xcoord = x;
		params.ycoord = y;
		params.kid = ById("RAApiKnight").value;
		params.r1 = res - 1; // reduce max by 1 to avoid load capacity errors due to roundoff
		params.r2 = 0;
		params.r3 = 0;
		params.r4 = 0;
		params.gold = 0;
		params.champid = 0;
		for (var ui in uW.cm.UNIT_TYPES) {
			i = uW.cm.UNIT_TYPES[ui];
			params["u" + i] = 0;
		}
		if (typemarche != 3) {
			for (var ui in uW.cm.UNIT_TYPES) {
				i = uW.cm.UNIT_TYPES[ui];
				if (ById("RAAnbunit" + i).value > 0) params["u" + i] = ById("RAAnbunit" + i).value;
			}
		} else {
			params.u3 = ById("RAAnbunit3").value;
			ById("RAAnbunit3").value = 0;
		}
		if (typemarche == 4)
			if (ById('RAApiChampion').value != "") {
				var championidx = "";
				for (i = 0; i < Seed.champion.champions.length; i++) {
					if (Seed.champion.champions[i].championId == ById('RAApiChampion').value) championidx = i;
				}
				params.champid = ById('RAApiChampion').value;
			}
		t.actionRAA.disabled = true;
		t.actionREN.disabled = true;
		t.actionREE.disabled = true;
		t.statutRAA.innerHTML = "<i><b>Sending march....</b></i>";
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/march.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			loading: true,
			onSuccess: function (transport) {
				var t = Tabs.Attaque;
				var rslt = transport;
				if (rslt.ok) {
					var timediff = parseInt(rslt.eta) - parseInt(rslt.initTS);
					var rtimediff = parseInt(rslt.returnTS) - parseInt(rslt.initTS);
					var ut = unsafeWindow.unixtime();
					var unitsarr = {};
					for (var ui in unsafeWindow.cm.UNIT_TYPES) {
						i = unsafeWindow.cm.UNIT_TYPES[ui];
						if (params["u" + i])
							unitsarr[i] = params["u" + i];
						else
							unitsarr[i] = 0;
					}
					var resources = new Array();
					resources[0] = params.gold;
					for (i = 1; i <= 5; i++) {
						resources[i] = params["r" + i];
					}
					var currentcityid = t.sourceCity.id;
					unsafeWindow.attach_addoutgoingmarch(rslt.marchId, rslt.marchUnixTime, ut + timediff, params.xcoord, params.ycoord, unitsarr, params.type, params.kid, resources, rslt.tileId, rslt.tileType, rslt.tileLevel, currentcityid, true, ut + rtimediff);
					if (rslt.updateSeed) {
						unsafeWindow.update_seed(rslt.updateSeed)
					};
					for (var i = 0; i < iused.length; i++) {
						Seed.items["i" + iused[i]] = parseInt(Seed.items["i" + iused[i]]) - 1;
						unsafeWindow.ksoItems[iused[i]].subtract();
					}
					var typeattaque = "";
					switch (typemarche) {
					case 2:
						typeattaque = "Reinforce successful";
						break;
					case 3:
						typeattaque = "Scout successful";
						break;
					case 4:
						typeattaque = "Attack successful";
						break;
					case 5:
						typeattaque = "Reassign successful";
						break;
					default:
						typeattaque = "March successful";
					}
					t.statutRAA.innerHTML = "<center><font size='3px'><b>" + typeattaque + "</b></font></center>";
					if (params.champid) uW.cm.ChampionManager.setIsMarching(championidx, true);
					t.clickRAACitySourceSelect(t.sourceCity);
				} else {
					t.statutRAA.innerHTML = "<font color=red size='3px'><b>Error sending march!<b></font>";
					if (rslt.error_code && (rslt.error_code == 212 || rslt.error_code == 213)) {
						Seed.knights['city' + params.cid]['knt' + params.kid].knightStatus = 10;
					};
					if (rslt.msg) {
						t.statutRAA.innerHTML += "<br><font color=black size='2px'>" + rslt.msg + "</font>";
					} else {
						t.statutRAA.innerHTML += "<br>Waiting for 2 seconds!</font>";
						//setTimeout(function() { t.clickATTAQUEDo(); }, 2000);
					}
				}
				t.actionRAA.disabled = false;
				t.actionREN.disabled = false;
				t.actionREE.disabled = false;
			},
			onFailure: function () {
				var t = Tabs.Attaque;
				t.statutRAA.innerHTML = "<font color=red size='3px'><b>Error communicating with server!<b></font>";
				t.actionRAA.disabled = false;
				t.actionREN.disabled = false;
				t.actionREE.disabled = false;
			}
		}, true);
	},
	estimerRes: function () {
		var t = Tabs.Attaque;
		// CAlcul de ETA = Estimation du temps de marches
		var x1 = parseInt(t.sourceCity.x);
		var x2 = parseInt(t.destinationCityx.value);
		var y1 = parseInt(t.sourceCity.y);
		var y2 = parseInt(t.destinationCityy.value);
		var dist = distance(x1, y1, x2, y2);
		ById("BOEstimationD").innerHTML = '<b>' + dist + '</b>&nbsp;<a href="javascript:void(0)" onclick="cm.utils.CoordinateLinkController.onClick(event)" class="coordinateLink">(' + t.destinationCityx.value + ',' + t.destinationCityy.value + ')</a>';
		for (var ui in uW.cm.UNIT_TYPES) {
			r = uW.cm.UNIT_TYPES[ui];
			var m = estETA(dist, r, t.sourceCity.id);
			ById("BOEstimationTT" + r).innerHTML = "<b>" + m.etaStr + "</b>";
			ById("BOEstimationTZ" + r).innerHTML = "<b>" + m.friendEtaStr + "</b>";
		}
	},
	SelectFavoris: function () {
		var t = Tabs.Attaque;
		if (t.listeFavoris.value != '') {
			var valeur = t.listeFavoris.value;
			var x = valeur.substr(0, valeur.lastIndexOf(','));
			var y = valeur.substr(valeur.lastIndexOf(',') + 1, valeur.length);
			t.destinationCityx.value = x;
			t.destinationCityy.value = y;
		}
		t.estimerRes();
	},
	chercherFavoris: function () {
		var t = Tabs.Attaque;
		var myA = getMyAlliance();
		if (myA[0] != 0) {
			var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
			params.perPage = 100;
			params.allianceId = myA[0];
			new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getUserLeaderboard.php" + unsafeWindow.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					// on vide la liste
					//t.listeFavoris.innerHTML=null;
					if (rslt.ok) {
						var z = 0;
						var m = "";
						for (var i = 0; i < rslt.results.length; i++) {
							p = rslt.results[i];
							if (p.userId != 0) {
								for (var c = 0; c < p.cities.length; c++) {
									if (Seed.player.name != p.displayName) {
										m += "<option value='" + p.cities[c].xCoord + "," + p.cities[c].yCoord + "'>" + p.displayName + " - City " + (c + 1) + " - " + p.cities[c].xCoord + "," + p.cities[c].yCoord + "</option>";
									}
								} //fin for cities  	       
							} //fin if user 
						} //fin for resultat
						t.listeFavoris.innerHTML = "<option value=''>Selection...</option>" + m;
					} // fin
				},
				onFailure: function (rslt) {
					t.listeFavoris.innerHTML = "<option>Error getting info</option>";
				},
			});
		} else {
			// Si pas d'alliance !
			t.listeFavoris.innerHTML = "<option>Pas d'alliance !</option>";
		}
	},
	SaveCoordsOptions: function (x, y) {
		Options.Xrenfort = x;
		Options.Yrenfort = y;
		saveOptions();
	},
	Refreshtroops: function () {
		if (!ById("RAAstatsource")) return;
		var t = Tabs.Attaque;
		var cityID = 'city' + t.sourceCity.id;
		for (var ui in uW.cm.UNIT_TYPES)
			ById('RAAdestunit' + uW.cm.UNIT_TYPES[ui]).value = parseInt(Seed.units[cityID]['unt' + uW.cm.UNIT_TYPES[ui]]);
		setTimeout(t.Refreshtroops, 1000);
	},
	clickRAACitySourceSelect: function (city) {
		var t = Tabs.Attaque;
		if (t.sourceCity != city) {
			t.sourceCity = city;
		}
		var m = "";
		m = "<table cellspacing=0 cellpadding=0 width=80%><tr><td colspan=2>Units Available</td></tr>";
		var cityID = 'city' + t.sourceCity.id;
		for (var ui in uW.cm.UNIT_TYPES) {
			r = uW.cm.UNIT_TYPES[ui];
			m += '<tr><td align=right><img title="' + unsafeWindow.unitcost['unt' + r][0] + '" alt="' + unsafeWindow.unitcost['unt' + r][0] + '" height=20 src=https://kabam1-a.akamaihd.net/silooneofcamelot//fb/e2/src/img/units/unit_' + r + '_30.jpg></td>\
             <td align=left><input style="border:1px solid black;height:20px;font-size:11px;" id="RAAdestunit' + r + '" type=text size=10 readonly value="' + parseInt(Seed.units[cityID]['unt' + r]) + '">&nbsp;\
             <input type=button value="--->" id="RAApdestunit' + r + '"  style="border:1px solid black;height:16px;font-size:11px;"></td></tr>';
		}
		m += "</table>";
		ById("RAAstatsource").innerHTML = m;
		var knt = new Array();
		for (k in Seed.knights['city' + t.sourceCity.id]) {
			if (Seed.knights['city' + t.sourceCity.id][k]["knightStatus"] == 1 && Seed.leaders['city' + t.sourceCity.id]["resourcefulnessKnightId"] != Seed.knights['city' + t.sourceCity.id][k]["knightId"] && Seed.leaders['city' + t.sourceCity.id]["politicsKnightId"] != Seed.knights['city' + t.sourceCity.id][k]["knightId"] && Seed.leaders['city' + t.sourceCity.id]["combatKnightId"] != Seed.knights['city' + t.sourceCity.id][k]["knightId"] && Seed.leaders['city' + t.sourceCity.id]["intelligenceKnightId"] != Seed.knights['city' + t.sourceCity.id][k]["knightId"]) {
				knt.push({
					Name: Seed.knights['city' + t.sourceCity.id][k]["knightName"],
					Combat: Seed.knights['city' + t.sourceCity.id][k]["combat"],
					ID: Seed.knights['city' + t.sourceCity.id][k]["knightId"],
				});
			}
		}
		knt = knt.sort(function sort(a, b) {
			a = parseInt(a['Combat']);
			b = parseInt(b['Combat']);
			return a == b ? 0 : (a > b ? -1 : 1);
		});
		ById('RAApiKnight').options.length = 0;
		var o = document.createElement("option");
		o.text = "--Select a Knight--"
		o.value = 0;
		ById("RAApiKnight").options.add(o);
		for (k in knt) {
			if (knt[k]["Name"] != undefined) {
				var o = document.createElement("option");
				o.text = (knt[k]["Name"] + ' (' + knt[k]["Combat"] + ')')
				o.value = knt[k]["ID"];
				ById("RAApiKnight").options.add(o);
			}
		}
		if (ById('RAApiKnight').options.length > 0) {
			if (Options.marchautoknight)
				ById('RAApiKnight').selectedIndex = 1;
		}
		ById('RAApiChampion').options.length = 0;
		var o = document.createElement("option");
		o.text = "--Select a Champion--";
		o.value = 0;
		ById("RAApiChampion").options.add(o);
		var c = uW.cm.ChampionModalController.getCastleViewData();
		var d = uW.cm.ChampionManager.getCityChampion(t.sourceCity.id);
		if ((c != null) && (d != null)) {
			var champname = c.champions[d].name;
			var champstatus = c.champions[d].status;
			if (champstatus == "Defending") {
				var o = document.createElement("option");
				o.text = champname;
				o.value = c.champions[d].id;
				ById("RAApiChampion").options.add(o);
			}
		}
		var itemlist = [55, 57, 931, 932];
		for (var i = 0; i < itemlist.length; i++) {
			ById('BOitemSpan_' + itemlist[i]).innerHTML = unsafeWindow.ksoItems[itemlist[i]].count;
		}
		for (var ui in uW.cm.UNIT_TYPES) {
			r = uW.cm.UNIT_TYPES[ui];
			ById("RAApdestunit" + r).addEventListener('click', function () {
				var nomcha = this.id.replace("RAApdest", "RAAdest");
				var nomcha2 = this.id.replace("RAApdestunit", "RAAnbunit");
				ById(nomcha2).value = 0;
				var e = 1;
				var f = unsafeWindow.unixtime();
				if (Seed.playerEffects.aurasExpire) {
					if (Seed.playerEffects.aurasExpire > f) {
						e = 1.15
					}
				}
				if (Seed.playerEffects.auras2Expire) {
					if (Seed.playerEffects.auras2Expire > f) {
						e = 1.3
					}
				}
				var l_elem = ById("BOitem_931");
				if (l_elem && l_elem.checked && parseInt(Seed.items["i931"]) > 0)
					e += 0.25;
				var l_elem = ById("BOitem_932");
				if (l_elem && l_elem.checked && parseInt(Seed.items["i932"]) > 0)
					e += 0.5;
				var trmarchsizebuff = Math.floor(equippedthronestats(66));
				if (trmarchsizebuff > unsafeWindow.cm.thronestats.boosts.MarchSize.Max) trmarchsizebuff = unsafeWindow.cm.thronestats.boosts.MarchSize.Max;
				if (trmarchsizebuff > 0)
				//				e+=(trmarchsizebuff/100);
					e *= (1 + trmarchsizebuff / 100);
				if (unsafeWindow.seed.cityData.city[t.sourceCity.id].isPrestigeCity) {
					var b = unsafeWindow.seed.cityData.city[t.sourceCity.id].prestigeInfo.prestigeLevel;
					var r = unsafeWindow.cm.WorldSettings.getSetting("ASCENSION_RALLYPOINT_BOOST"),
						m = JSON.parse(r),
						u = m.values[b - 1][1],
						k = parseFloat(u);
					e *= k
					if (unsafeWindow.seed.cityData.city[t.sourceCity.id].prestigeInfo.blessings.indexOf(207) != -1) e *= 1.1;
				}
				var niveauPointRall = parseInt(getCityBuilding(t.sourceCity.id, 12).maxLevel); // 12=Point de ralliement
				var maxtroupe = Math.round(niveauPointRall * 10000 * e - 0.001);
				if (niveauPointRall == 11) maxtroupe = Math.round(150000 * e - 0.001);
				if (niveauPointRall == 12) maxtroupe = Math.round(200000 * e - 0.001);
				var nbunitto = 0;
				for (var ui in uW.cm.UNIT_TYPES) {
					r = uW.cm.UNIT_TYPES[ui];
					nbunitto += parseInt(ById("RAAnbunit" + r).value);
				}
				var libre = parseInt(maxtroupe - nbunitto);
				if (ById(nomcha).value >= libre) {
					ById(nomcha2).value = libre;
				} else {
					ById(nomcha2).value = ById(nomcha).value;
				}
			}, false);
		}
		if (t.sourceCity != city) {
			for (var ui in uW.cm.UNIT_TYPES) {
				r = uW.cm.UNIT_TYPES[ui];
				ById("RAAnbunit" + r).value = "0";
			}
		} else {
			for (var ui in uW.cm.UNIT_TYPES) {
				r = uW.cm.UNIT_TYPES[ui];
				if (ById("RAAnbunit" + r).value == "") ById("RAAnbunit" + r).value = "0";
				if (ById("RAAdestunit" + r).value == "") ById("RAAdestunit" + r).value = "0";
				if (parseInt(ById("RAAnbunit" + r).value) > parseInt(ById("RAAdestunit" + r).value)) {
					ById("RAAnbunit" + r).value = "0";
				}
			}
		}
		t.estimerRes();
		var closestNum = t.getclosestcity();
		//if(t.dcp1)
		//t.dcp1.selectBut(closestNum);
	},
}

function equippedthronestats(stat_id) {
	var current_slot = Seed.throne.activeSlot;
	var equip_items = Seed.throne.slotEquip[current_slot];
	var total = 0;
	for (var k = 0; k < equip_items.length; k++) {
		var item_id = equip_items[k];
		var y = unsafeWindow.kocThroneItems[item_id];
		for (var O in y["effects"]) {
			var i = +(O.split("slot")[1]);
			var id = y["effects"]["slot" + i]["id"];
			if (id == stat_id) {
				tier = parseInt(y["effects"]["slot" + i]["tier"]);
				level = y["level"];
				p = unsafeWindow.cm.thronestats.tiers[id][tier];
				while (!p && (tier > 0)) {
					tier--;
					p = unsafeWindow.cm.thronestats.tiers[id][tier];
				}
				if (!p) continue; // can't find stats for tier
				if (y["effects"]["slot"+i].fromJewel && (level > unsafeWindow.cm.thronestats.jewelGrowthLimit[y["effects"]["slot"+i].quality])) {
					level = unsafeWindow.cm.thronestats.jewelGrowthLimit[y["effects"]["slot"+i].quality]
				}
				if (i <= y["quality"]) var Percent = p.base + ((level * level + level) * p.growth * 0.5);
				total += Percent;
			}
		}
	}
	return total;
}
var equippedthroneItems = function (throneSet) {
	var thronePreset = Seed.throne.activeSlot;
	var equippedItems = {};
	for (itm = 0; itm < Seed.throne.slotEquip[thronePreset].length; itm++) {
		//		equippedItems[Seed.throne.slotEquip[thronePreset][itm]] = Seed.throne.inventory[Seed.throne.slotEquip[thronePreset][itm]];
		equippedItems[Seed.throne.slotEquip[thronePreset][itm]] = unsafeWindow.kocThroneItems[Seed.throne.slotEquip[thronePreset][itm]];
	}
	return equippedItems;
}

function estETA(dist, unit, cityID) {
	var ret = {
		ETA: 0,
		etaStr: 'N/D',
		friendETA: 0,
		friendEtaStr: 'N/D'
	};
	if (dist <= 0) return ret;
	var troop_type = unit;
	var horse = 0;
	//	if(troop_type>6) horse=1;
	if (troop_type > 6 && troop_type < 13) horse = 1;
	var troop_speed = parseInt(unsafeWindow.unitstats["unt" + troop_type][3]) * (1 + 0.1 * parseInt(Seed.tech.tch11));
	if (horse) {
		troop_speed = troop_speed * (1 + 0.05 * parseInt(Seed.tech.tch12))
	}
	var Speed = troop_speed;
	var gi = unsafeWindow.cm.guardianModalModel.getMarchBonus();
	var multiplier = 1 + (gi * 0.01);
	Speed = Speed * multiplier;
	var gSpeed = 0;
	var estSec;
	if (Speed > 0) {
		gSpeed = Speed / 6000;
		estSec = Math.ceil(parseFloat(dist) / gSpeed);
	}
	var e = 1;
	if (ById("BOitem_55")) {
		var l_elem = ById("BOitem_55");
		if (l_elem && l_elem.checked > 0) {
			e = 0.75;
		}
	}
	if (ById("BOitem_57")) {
		var l_elem = ById("BOitem_57");
		if (l_elem && l_elem.checked) {
			e = 0.5;
		}
	}
	ret.ETA = (parseInt((estSec * e + '')) + 30);
	if (Seed.playerEffects.returnExpire > unsafeWindow.unixtime()) {
		ret.ETA = parseInt(ret.ETA * 0.5);
	}
	ret.etaStr = timestr(ret.ETA, 1);
	var building = getCityBuilding(cityID, 18);
	if (building) {
		fSpeed = Speed * (1 + parseInt(building.maxLevel) / 2);
		gSpeed = fSpeed / 6000;
		estSec = (dist / gSpeed).toFixed(0);
		ret.friendETA = parseInt((estSec * e + '')) + 30;
		ret.friendEtaStr = timestr((ret.friendETA + ''), 1);
	}
	var isPrestige = Seed.cityData.city[cityID].isPrestigeCity;
	if (isPrestige) {
		fSpeed = Speed * (1 + 5.5);
		gSpeed = fSpeed / 6000;
		estSec = (dist / gSpeed).toFixed(0);
		ret.friendETA = parseInt((estSec * e + '')) + 30;
		ret.friendEtaStr = timestr((ret.friendETA + ''), 1);
	}
	return ret;
}
/********************************* Messages Tab *************************************/
Tabs.Rpt = {
	tabOrder: 90,
	tabLabel: 'Reports',
	cont: null,
	state: null,
	minPages: parseInt(Options.arPageFrom),
	maxPages: parseInt(Options.arPageTo),
	data: [],
	report: [],
	totalPages: parseInt(Options.arPageTo),
	what: '',
	whatNot: '',
	content: '',
	init: function (div) {
		var t = Tabs.Rpt;
		t.cont = div;
		unsafeWindow.getmsg = t.getMailBody;
		unsafeWindow.getReport = t.getReportBody;
		var tc = '<DIV class=ptstat>SEARCH INBOX, OUTBOX, PLAYER AND ALLIANCE REPORTS</DIV><DIV class=ptentry><TABLE><TR align=center valign=center>';
		tc += '<TD width = "100px" ; border:none"><a href="https://code.google.com/p/koc-power-tools/wiki/HowToMessages" target="_blank">HELP</a></td></tr>';
		tc += '<TD class=xtab align=right>Type:&nbsp;<SELECT id="idRptType">';
		tc += '<OPTION value="alliance" ' + (Options.rptType == 'alliance' ? 'SELECTED' : '') + '>Alliance Reports</OPTION>';
		tc += '<OPTION value="player" ' + (Options.rptType == 'player' ? 'SELECTED' : '') + '>Player Reports</OPTION>';
		tc += '<OPTION value="inbox" ' + (Options.rptType == 'inbox' ? 'SELECTED' : '') + '>Inbox</OPTION>';
		tc += '<OPTION value="outbox" ' + (Options.rptType == 'outbox' ? 'SELECTED' : '') + '>Outbox</OPTION></SELECT>';
		tc += '<BR />Pages:&nbsp;<INPUT id="idRptPageFrom" size=1 value="' + Options.arPageFrom + '">&#8211;<INPUT id="idRptPageTo" size=1 value="' + Options.arPageTo + '"></TD>';
		tc += '<TD class=xtab align=right>Attacker:&nbsp;<SELECT id="idRptAttacker">'; // Options.arPageFrom - Options.arPageTo
		tc += '<OPTION value="Them" ' + (Options.arAttacker == 'Them' ? 'SELECTED' : '') + '>Them</OPTION>';
		tc += '<OPTION value="Us" ' + (Options.arAttacker == 'Us' ? 'SELECTED' : '') + '>Us</OPTION>';
		tc += '<OPTION value="Both" ' + (Options.arAttacker == 'Both' ? 'SELECTED' : '') + '>Both</OPTION></SELECT>';
		tc += '<BR />Target:&nbsp;<SELECT id="idRptTarget">';
		tc += '<OPTION value="Them" ' + (Options.arTarget == 'Them' ? 'SELECTED' : '') + '>Them</OPTION>';
		tc += '<OPTION value="Us" ' + (Options.arTarget == 'Us' ? 'SELECTED' : '') + '>Us</OPTION>';
		tc += '<OPTION value="Both" ' + (Options.arTarget == 'Both' ? 'SELECTED' : '') + '>Both</OPTION></SELECT></TD>';
		tc += '<TD class=xtab align=right>Contains:&nbsp;<INPUT id=idRptWhat type=text size=11 maxlength=50 value=""><BR />';
		tc += 'But not:&nbsp;<INPUT id=idRptWhatNot type=text size=11 maxlength=50 value=""></TD>';
		tc += '<TD class=xtab align=left><INPUT id=idRptAttack type=checkbox ' + (Options.arAttack ? 'CHECKED' : '') + ' />&nbsp;Attack<BR />';
		tc += '<INPUT id=idRptScout type=checkbox ' + (Options.arScout ? 'CHECKED' : '') + ' />&nbsp;Scout</TD>';
		tc += '<TD class=xtab align=left><INPUT id=idRptReinforce type=checkbox ' + (Options.arReinforce ? 'CHECKED' : '') + ' />&nbsp;Reinforce<BR />';
		tc += '<INPUT id=idRptTransport type=checkbox ' + (Options.arTransport ? 'CHECKED' : '') + ' />&nbsp;Transport</TD>';
		tc += '<TD class=xtab align=left><INPUT id=idRptSearch type=submit value="Start Search" /></TD></TR></TABLE></DIV>';
		tc += '<DIV class=ptstat><TABLE width=100% cellspacing=0><TR><TD class=xtab align=left width=125><DIV id=idRptSearched></DIV></TD></TD>';
		tc += '<TD class=xtab><TD class=xtab align=center><SPAN style="white-space:normal" id=idRptStatus>&nbsp;</span></TD></TD>';
		tc += '<TD class=xtab><TD class=xtab align=right width=125><DIV id=idRptFound></DIV></TD></TR></TABLE></DIV>';
		tc += '<DIV id="idRptResultsDiv" style="height:556px; max-height:556px; overflow-x:auto; overflow-y:auto; white-space:nowrap;"></DIV>';
		t.cont.innerHTML = tc;
		document.getElementById('idRptType').addEventListener('change', t.handleRptType, false);
		document.getElementById('idRptPageFrom').addEventListener('change', t.handleRptPages, false);
		document.getElementById('idRptPageTo').addEventListener('change', t.handleRptPages, false);
		document.getElementById('idRptAttacker').addEventListener('change', t.handleRptAttacker, false);
		document.getElementById('idRptTarget').addEventListener('change', t.handleRptTarget, false);
		document.getElementById('idRptWhat').addEventListener('keyup', t.handleRptWhat, false);
		document.getElementById('idRptWhatNot').addEventListener('keyup', t.handleRptWhatNot, false);
		document.getElementById('idRptSearch').addEventListener('click', t.handleRptSearch, false);
		t.togOpt('idRptAttack', 'arAttack');
		t.togOpt('idRptScout', 'arScout');
		t.togOpt('idRptReinforce', 'arReinforce');
		t.togOpt('idRptTransport', 'arTransport');
		return this.cont;
	},
	togOpt: function (checkboxId, optionName) {
		var t = Tabs.Rpt;
		var checkbox = document.getElementById(checkboxId);
		checkbox.addEventListener('change', eventHandler, false);

		function eventHandler() {
			Options[optionName] = this.checked;
			saveOptions();
			if (t.data.length > 0)
				if (Options.rptType == 'alliance' || Options.rptType == 'player')
					t.DisplayRpt();
				else
					t.DisplayMail();
		}
	},
	handleRptType: function () {
		var t = Tabs.Rpt;
		Options.rptType = document.getElementById("idRptType").value;
		saveOptions();
		document.getElementById("idRptSearched").innerHTML = '';
		document.getElementById("idRptStatus").innerHTML = '&nbsp;';
		document.getElementById("idRptFound").innerHTML = '';
		document.getElementById("idRptResultsDiv").innerHTML = '';
	},
	handleRptPages: function () {
		var t = Tabs.Rpt;
		t.minPages = parseInt(document.getElementById("idRptPageFrom").value);
		t.maxPages = parseInt(document.getElementById("idRptPageTo").value);
		if (t.maxPages < t.minPages) {
			t.maxPages = t.minPages;
			document.getElementById("idRptPageTo").value = t.maxPages;
		}
		Options.arPageFrom = t.minPages;
		Options.arPageTo = t.maxPages;
		saveOptions();
		t.totalPages = t.maxPages;
	},
	handleRptAttacker: function () {
		var t = Tabs.Rpt;
		Options.arAttacker = document.getElementById("idRptAttacker").value;
		saveOptions();
		if ((Options.rptType == 'alliance' || Options.rptType == 'player') && t.data.length > 0)
			t.DisplayRpt();
	},
	handleRptTarget: function () {
		var t = Tabs.Rpt;
		Options.arTarget = document.getElementById("idRptTarget").value;
		saveOptions();
		if ((Options.rptType == 'alliance' || Options.rptType == 'player') && t.data.length > 0)
			t.DisplayRpt();
	},
	handleRptWhat: function () {
		var t = Tabs.Rpt;
		t.what = document.getElementById("idRptWhat").value;
		if (t.data.length > 0)
			if (Options.rptType == 'alliance' || Options.rptType == 'player')
				t.DisplayRpt();
			else
				t.DisplayMail();
	},
	handleRptWhatNot: function () {
		var t = Tabs.Rpt;
		t.whatNot = document.getElementById("idRptWhatNot").value;
		if (t.data.length > 0)
			if (Options.rptType == 'alliance' || Options.rptType == 'player')
				t.DisplayRpt();
			else
				t.DisplayMail();
	},
	handleRptSearch: function () {
		var t = Tabs.Rpt;
		if (t.searchRunning) {
			t.searchRunning = false;
			t.stopSearch('SEARCH CANCELLED!');
			return;
		}
		t.handleRptPages();
		document.getElementById('idRptSearch').value = 'Stop Search';
		document.getElementById('idRptStatus').innerHTML = 'Searching page ' + t.minPages + ' of ' + t.maxPages;
		t.searchRunning = true;
		t.data = [];
		t.report = [];
		if (Options.rptType == 'alliance' || Options.rptType == 'player')
			t.getRpt(t.minPages);
		else
			t.getMail(t.minPages);
	},
	stopSearch: function (msg) {
		var t = Tabs.Rpt;
		if (t.searchRunning || msg == 'SEARCH CANCELLED!')
			document.getElementById('idRptStatus').innerHTML = '<FONT color=#ffaaaa>' + msg + '</FONT>';
		document.getElementById('idRptSearch').value = 'Start Search';
		t.searchRunning = false;
		if (Options.rptType == 'alliance' || Options.rptType == 'player')
			t.DisplayRpt();
		else
			t.DisplayMail();
	},
	getMail: function (pageNum) {
		var t = Tabs.Rpt;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.pf = 0;
		params.requestType = "GET_MESSAGE_HEADERS_FOR_USER_INBOX";
		params.boxType = document.getElementById('idRptType').value;
		params.pageNo = pageNum;
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getEmail.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				t.getMailCallback(rslt, pageNum);
			},
			onFailure: function () {},
		}, false);
	},
	getMailCallback: function (rslt, page) {
		var t = Tabs.Rpt;
		if (rslt) {
			if (!rslt.ok) {
				document.getElementById("idRptStatus").innerHTML = '<FONT color=#ffaaaa>' + rslt.errorMsg + '</FONT>';
				return;
			}
			t.totalPages = parseInt(rslt.noOfPages);
			if (t.totalPages < t.maxPages)
				t.maxPages = t.totalPages;
			if (rslt.message && page) {
				var ml = rslt.message;
				if (rslt.messageCount > 0) {
					var rptkeys = unsafeWindow.Object.keys(ml);
					for (var i = 0; i < rptkeys.length; i++) {
						var rpt = ml[rptkeys[i]];
						rpt.page = page;
						t.data.push(rpt);
					}
				}
			}
			if (parseInt(page) + 1 <= t.maxPages && t.searchRunning) {
				document.getElementById("idRptStatus").innerHTML = 'Searching page ' + (parseInt(page) + 1) + ' of ' + t.maxPages;
				t.getMail(parseInt(page) + 1);
				if (t.data.length > 0)
					t.DisplayMail();
			} else if (page)
				t.stopSearch('Done!');
		}
	},
	getRpt: function (pageNum) {
		var t = Tabs.Rpt;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.pageNo = pageNum;
		if (Options.rptType == 'alliance')
			params.group = "a";
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/listReports.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				t.getRptCallback(rslt, pageNum);
			},
			onFailure: function (rslt) {
				t.getRptCallback(rslt, pageNum);
			},
		}, false);
	},
	getRptCallback: function (rslt, page) {
		var t = Tabs.Rpt;
		if (rslt) {
			if (!rslt.ok) {
				document.getElementById("idRptStatus").innerHTML = '<FONT color=#ffaaaa>' + rslt.errorMsg + '</FONT>';
				return;
			}
			t.totalPages = parseInt(rslt.totalPages);
			if (t.totalPages < t.maxPages)
				t.maxPages = t.totalPages;
			if (rslt.arReports && page) {
				var ar = rslt.arReports;
				if (ar.length == 0)
					t.stopSearch('Empty pages found from page ' + page + ' onwards - Kabam glitch');
				var rptkeys = unsafeWindow.Object.keys(ar);
				for (var i = 0; i < rptkeys.length; i++) {
					var rpt = ar[rptkeys[i]];
					var reportId = parseInt(rpt.reportId);
					t.report[reportId] = [];
					// Attacker
					t.report[reportId].side1Name = rslt.arPlayerNames['p' + rpt.side1PlayerId];
					t.report[reportId].side1AllianceId = parseInt(rpt.side1AllianceId);
					if (rpt.side1AllianceId > 0)
						t.report[reportId].side1AllianceName = rslt.arAllianceNames['a' + rpt.side1AllianceId];
					else
						t.report[reportId].side1AllianceName = 'unaligned';
					if (rpt.side1CityId > 0)
						t.report[reportId].side1CityName = rslt.arCityNames['c' + rpt.side1CityId];
					else
						t.report[reportId].side1CityName = 'none';
					t.report[reportId].side1XCoord = rpt.side1XCoord;
					t.report[reportId].side1YCoord = rpt.side1YCoord;
					// Target
					if (parseInt(rpt.side0PlayerId) == 0) { // Kabam
						t.report[reportId].side0Name = 'Enemy';
						t.report[reportId].side0AllianceName = '';
						t.report[reportId].side0CityName = '';
					} else { // Player
						t.report[reportId].side0Name = rslt.arPlayerNames['p' + rpt.side0PlayerId];
						if (rpt.side0AllianceId > 0)
							t.report[reportId].side0AllianceName = rslt.arAllianceNames['a' + rpt.side0AllianceId];
						else
							t.report[reportId].side0AllianceName = 'unaligned';
						if (rpt.side0CityId > 0)
							t.report[reportId].side0CityName = rslt.arCityNames['c' + rpt.side0CityId];
						else
							t.report[reportId].side0CityName = 'none';
					}
					t.report[reportId].side0AllianceId = parseInt(rpt.side0AllianceId);
					t.report[reportId].side0XCoord = rpt.side0XCoord;
					t.report[reportId].side0YCoord = rpt.side0YCoord;
					if (parseInt(rpt.side0TileType) == 10)
						t.report[reportId].side0TileTypeText = 'Grass';
					else if (parseInt(rpt.side0TileType) == 11)
						t.report[reportId].side0TileTypeText = 'Lake';
					else if (parseInt(rpt.side0TileType) == 20)
						t.report[reportId].side0TileTypeText = 'Woods';
					else if (parseInt(rpt.side0TileType) == 30)
						t.report[reportId].side0TileTypeText = 'Hills';
					else if (parseInt(rpt.side0TileType) == 40)
						t.report[reportId].side0TileTypeText = 'Mount';
					else if (parseInt(rpt.side0TileType) == 50)
						t.report[reportId].side0TileTypeText = 'Plain';
					else if (parseInt(rpt.side0CityId) == 0)
						t.report[reportId].side0TileTypeText = 'Barb';
					else
						t.report[reportId].side0TileTypeText = 'City';
					t.report[reportId].side0TileTypeLevel = t.report[reportId].side0TileTypeText + ' ' + rpt.side0TileLevel;
					t.report[reportId].side0TileType = rpt.side0TileType;
					t.report[reportId].side0TileLevel = rpt.side0TileLevel;
					// Miscellaneous
					t.report[reportId].page = page;
					t.report[reportId].reportUnixTime = rpt.reportUnixTime;
					if (rpt.side0AllianceId == parseInt(getMyAlliance()[0]))
						t.report[reportId].sideId = 0;
					else if (rpt.side1AllianceId == parseInt(getMyAlliance()[0])) {
						t.report[reportId].sideId = 1;
					} else { // if we're here then this is a player report from when they were in another alliance
						if (rpt.side0PlayerId == uW.tvuid)
							t.report[reportId].sideId = 0;
						else if (rpt.side1PlayerId == uW.tvuid)
							t.report[reportId].sideId = 1;
						else // shouldn't get here but we'll catch it if the report body is requested
							t.report[reportId].sideId = -1;
					}
					if (rpt.marchType == 0)
						t.report[reportId].marchName = 'Desertion';
					else if (rpt.marchType == 1)
						t.report[reportId].marchName = 'Transport';
					else if (rpt.marchType == 2)
						t.report[reportId].marchName = 'Reinforce';
					else if (rpt.marchType == 3) {
						if (t.report[reportId].sideId == 0)
							t.report[reportId].marchName = 'Anti-Scout';
						else
							t.report[reportId].marchName = 'Scout';
					} else if (rpt.marchType == 4) {
						if (t.report[reportId].sideId == 0)
							t.report[reportId].marchName = 'Defend';
						else
							t.report[reportId].marchName = 'Attack';
					} else
						t.report[reportId].marchName = '?';
					t.data.push({
						reportId: reportId,
					});
				}
			}
			if (parseInt(page) + 1 <= t.maxPages && t.searchRunning) {
				document.getElementById("idRptStatus").innerHTML = 'Searching page ' + (parseInt(page) + 1) + ' of ' + t.maxPages;
				t.getRpt(parseInt(page) + 1);
				if (t.data.length > 0)
					t.DisplayRpt();
			} else if (page)
				t.stopSearch('Done!');
		}
	},
	DisplayMail: function () {
		var t = Tabs.Rpt;
		var results = document.getElementById("idRptResultsDiv");
		if (!t.data.length) {
			results.innerHTML = '<center>None found</center>';
			return;
		}
		reportsSearched = t.data.length;
		reportsFound = 0;
		t.content = '';
		for (var i = 0; i < reportsSearched; i++) {
			var rpt = t.data[i];
			if ((t.what == '' || (rpt.subject.search(t.what, "i") != -1) || (rpt.displayName.search(t.what, "i") != -1)) && (t.whatNot == '' || ((rpt.subject.search(t.whatNot, "i") == -1) && (rpt.displayName.search(t.whatNot, "i") == -1)))) {
				reportsFound++;
				if (reportsFound == 1)
					t.content += '<center><table><thead><th>P</th><th>Date</th><th>From</th><th>Subject</th></thead><tbody>';
				t.content += '<tr><td align=right>' + rpt.page + '</td><td>' + rpt.dateSent + '</td><td>' + rpt.displayName + '</td>';
				t.content += '<td><A><SPAN onclick="getmsg(' + rpt.messageId + ')">' + rpt.subject + '</SPAN></a></td></tr>';
			}
		}
		if (reportsFound > 1)
			t.content += '</tbody></table></center>';
		if (reportsFound == 0 && reportsSearched > 0)
			t.content = '<center>None found</center>';
		results.innerHTML = t.content;
		document.getElementById("idRptSearched").innerHTML = '&nbsp;Searched: ' + reportsSearched;
		document.getElementById("idRptFound").innerHTML = 'Found: ' + reportsFound;
	},
	getMailBody: function (ID, dataI) {
		var t = Tabs.Rpt;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.messageId = ID;
		params.requestType = "GET_MESSAGE_FOR_ID";
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getEmail.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok)
					t.displayMailBody(rslt.messageBody);
			},
			onFailure: function () {},
		}, false);
	},
	displayMailBody: function (messageBody) {
		var t = Tabs.Rpt;
		var popMsg = null;
		t.popMsg = new CPopup('pbMailBody', 0, 0, 670, 600, true, function () {
			clearTimeout(1000);
		});
		t.popMsg.centerMe(mainPop.getMainDiv());
		var m = '<DIV style="max-height:565px; height:565px; overflow-y:scroll">';
		m += messageBody + '</div>';
		t.popMsg.getMainDiv().innerHTML = m;
		t.popMsg.getTopDiv().innerHTML = '<DIV align=center><B>Message</B></DIV>';
		t.popMsg.show(true);
	},
	DisplayRpt: function () {
		var t = Tabs.Rpt;
		var results = document.getElementById("idRptResultsDiv");
		if (!t.data.length) {
			results.innerHTML = '<center>None found</center>';
			return;
		}
		var myAllianceId = parseInt(getMyAlliance()[0]);
		reportsSearched = t.data.length;
		reportsFound = 0;
		t.content = '';
		for (var i = 0; i < reportsSearched; i++) {
			var reportId = t.data[i].reportId;
			var rpt = t.report[reportId];
			if ((rpt.side0Name == 'undefined') && (rpt.marchName != 'Desertion'))
				continue;
			if ((((myAllianceId == parseInt(rpt.side1AllianceId) && Options.arAttacker != 'Them') || (myAllianceId != parseInt(rpt.side1AllianceId) && Options.arAttacker != 'Us') || Options.arAttacker == 'Both') && ((myAllianceId == parseInt(rpt.side0AllianceId) && Options.arTarget != 'Them') || (myAllianceId != parseInt(rpt.side0AllianceId) && Options.arTarget != 'Us') || Options.arTarget == 'Both') && ((Options.arAttack && (rpt.marchName == 'Attack' || rpt.marchName == 'Defend')) || (Options.arScout && (rpt.marchName == 'Scout' || rpt.marchName == 'Anti-Scout')) || (Options.arReinforce && rpt.marchName == 'Reinforce') || (Options.arTransport && rpt.marchName == 'Transport'))) || (rpt.marchName == 'Desertion')) {
				if (((t.what == '' || (rpt.side1Name.search(t.what, "i") != -1) || (rpt.side1AllianceName.search(t.what, "i") != -1) || (rpt.side0Name.search(t.what, "i") != -1) || (rpt.side0AllianceName.search(t.what, "i") != -1) || (rpt.side0TileTypeText.search(t.what, "i") != -1)) && (t.whatNot == '' || ((rpt.side1Name.search(t.whatNot, "i") == -1) && (rpt.side1AllianceName.search(t.whatNot, "i") == -1) && (rpt.side0Name.search(t.whatNot, "i") == -1) && (rpt.side0AllianceName.search(t.whatNot, "i") == -1) && (rpt.side0TileTypeText.search(t.whatNot, "i") == -1)))) || (rpt.marchName == 'Desertion')) {
					reportsFound++;
					if (reportsFound == 1) {
						if (Options.enableReportNumber)
							t.content += '<center><table><thead><th>P</th><th>Date</th><th>Report</th><th>Attacker</th><th>From</th>';
						else
							t.content += '<center><table><thead><th>P</th><th>Date</th><th>Attacker</th><th>From</th>';
						if (Options.arAttacker != 'Us')
							t.content += '<th>Alliance</th>';
						t.content += '<th>Action</th><th>Target</th><th>Type</th><th>At</th>';
						if (Options.arTarget != 'Us')
							t.content += '<th>Alliance</th>';
						t.content += '<th>Dist</th><th>Nearest</th></thead><tbody>';
					}
					var closestDist = 999999;
					var closestLoc = null;
					var closestNum = 1;
					for (var c = 0; c < Cities.numCities; c++) {
						var city = Cities.cities[c];
						city.x + ',' + city.y
						var dist = distance(city.x, city.y, rpt.side0XCoord, rpt.side0YCoord);
						if (dist < closestDist) {
							closestDist = dist;
							closestLoc = city.x + ',' + city.y;
							closestNum = c + 1;
						}
					}
					if (rpt.marchName == 'Anti-Scout' || rpt.marchName == 'Defend')
						style = ' style="background-color:#EF9999;"';
					else if (rpt.marchName == 'Reinforce')
						style = ' style="background-color:#99EF99;"';
					else
						style = "";
					t.content += '<tr><td align=right ' + style + '>' + rpt.page + '</td><td ' + style + '>' + formatUnixTime(rpt.reportUnixTime, '24hour') + '</td>';
					if (Options.enableReportNumber)
						t.content += '<td ' + style + '>' + reportId + '</td>';
					if (rpt.marchName == 'Desertion') {
						t.content += '<td ' + style + '></td><td ' + style + '></td>';
						if (Options.arAttacker != 'Us')
							t.content += '<td ' + style + '></td>';
						t.content += '<td ' + style + '>' + rpt.marchName + '</td><td ' + style + '></td><td ' + style + '></td><td ' + style + '></td>';
						if (Options.arAttacker != 'Us')
							t.content += '<td ' + style + '></td>';
						t.content += '<td ' + style + '></td><td ' + style + '></td>';
					} else {
						t.content += '<td ' + style + '>' + rpt.side1Name + '</td><td align=center ' + style + '><A onclick="ptGotoMap(' + rpt.side1XCoord + ',' + rpt.side1YCoord + ')">' + rpt.side1XCoord + ',' + rpt.side1YCoord + '</a></td>';
						if (Options.arAttacker != 'Us')
							t.content += '<td ' + style + '>' + rpt.side1AllianceName + '</td>';
						t.content += '<td ' + style + '><A><SPAN onclick="ptChatReportClicked(' + reportId + ',0)">' + rpt.marchName + '</span></a></td>';
						t.content += '<td ' + style + '>' + rpt.side0Name + '</td><td>' + rpt.side0TileTypeLevel + '</td>';
						t.content += '<td align=center ' + style + '><A onclick="ptGotoMap(' + rpt.side0XCoord + ',' + rpt.side0YCoord + ')">' + rpt.side0XCoord + ',' + rpt.side0YCoord + '</a></td>';
						if (Options.arTarget != 'Us')
							t.content += '<td ' + style + '>' + rpt.side0AllianceName + '</td>';
						t.content += '<td align=right ' + style + '>' + Math.floor(closestDist) + '</td><td align=center ' + style + '><A onclick=\"ptGotoMap(' + closestNum + ')\">' + closestLoc + '</a></td></tr>';
					}
				}
			}
		}
		if (reportsFound > 1)
			t.content += '</tbody></table></center>';
		if (reportsFound == 0 && reportsSearched > 0)
			t.content = '<center>None found</center>';
		results.innerHTML = t.content;
		document.getElementById("idRptSearched").innerHTML = '&nbsp;Searched: ' + reportsSearched;
		document.getElementById("idRptFound").innerHTML = 'Found: ' + reportsFound;
	},
	show: function () {},
	hide: function () {},
};
/*********************************** Alliance TAB ***********************************/
Tabs.Alliance = {
	tabOrder: 120,
	tabLabel: uW.g_js_strings.commonstr.alliance,
	myDiv: null,
	alliancemembers: [],
	number: 0,
	totalmembers: 0,
	error: false,
	sortType: 1,
	sortBy: 'Name',
	init: function (div) {
		var t = Tabs.Alliance;
		t.myDiv = div;
		t.myDiv.style.overflowY = 'scroll';
		t.myDiv.style.maxHeight = '730px';
		t.totalmembers = 0;
		t.alliancemembers = [];
		uW.getdetails = t.getMemberDetails;
		var m = '<DIV class=ptstat>ALLIANCE FUNCTIONS</div><TABLE align=center cellpadding=1 cellspacing=0></table>';
		m += '<TD width = "100px" ; border:none"><a href="https://code.google.com/p/koc-power-tools/wiki/HowToAlliance" target="_blank">HELP</a></td></tr>';
		m += '<TABLE class=ptTab><TD width=200px>List Alliance Members</td><TD>Sort by: ' + htmlSelector({
			Name: 'Name',
			Might: 'Might',
			glory: 'Glory',
			Cities: 'Cities',
			Position: 'Position',
			dip: 'Days in Position',
			uid: 'User Id',
			fbuid: 'Facebook id'
		}, null, 'id=searchAlli') + '</td>';
		m += '<TD><INPUT id=alList type=submit value="List"></td>';
		m += '<TD id=progress></td></tr>';
		m += '<TR><TD width=200px>Show alliance diplomaties</td><TD><INPUT id=aldiplo type=submit value="List diplomaties"></td></tr></table>';
		m += '<DIV class=ptstat>OVERVIEW</div><TABLE align=center cellpadding=1 cellspacing=0></table>';
		m += '<TABLE id=alOverviewTab class=alTab><TR align="center"></tr></table>';
		t.myDiv.innerHTML = m;
		document.getElementById('alList').addEventListener('click', function () {
			if (!t.searching) {
				t.totalmembers = 0;
				t.alliancemembers = [];
				document.getElementById('alOverviewTab').innerHTML = "";
				document.getElementById('progress').innerHTML = "";
				document.getElementById('progress').innerHTML = uW.g_js_strings.commonstr.loadingddd;
				document.getElementById('alList').disabled = true;
				t.error = false;
				t.fetchAllianceMemberPage();
			}
		}, false);
		document.getElementById('searchAlli').addEventListener('click', function () {
			if (t.alliancemembers != "") {
				document.getElementById('alOverviewTab').innerHTML = "";
				t.paintMembers();
			}
		}, false);
		document.getElementById('aldiplo').addEventListener('click', function () {
			t.paintDiplomacy();
		}, false);
		//window.addEventListener('unload', t.onUnload, false);
	},
	paintMembers: function () {
		var t = Tabs.Alliance;
		if (document.getElementById('searchAlli').value == t.sortBy) {
			t.sortType *= -1;
		} else {
			t.sortType = 1;
		}
		t.sortBy = document.getElementById('searchAlli').value;
		var sortmembers = t.alliancemembers.sort(function (a, b) {
			var sortA = a[t.sortBy],
				sortB = b[t.sortBy];
			if (t.sortType > 0) {
				if (typeof (sortA) == 'number' && typeof (sortB) == 'number') {
					return sortA - sortB;
				} else {
					return sortA.localeCompare(sortB);
				}
			} else {
				if (typeof (sortA) == 'number' && typeof (sortB) == 'number') {
					return sortB - sortA;
				} else {
					return sortB.localeCompare(sortA);
				}
			}
		});
		for (var y = (sortmembers.length - 1); y >= 0; y--) {
			t._addTab(sortmembers[y].Name, sortmembers[y].Might, sortmembers[y].LastLogin, sortmembers[y].Position, sortmembers[y].dip, sortmembers[y].uid, sortmembers[y].fbuid, sortmembers[y].Cities, sortmembers[y].avatarurl, sortmembers[y].glory, sortmembers[y].dateJoined);
			t.myDiv.style.overflowY = 'scroll';
		}
		t._addTabHeader();
	},
	_addTab: function (Name, Might, LastLogin, Position, dip, uid, fbuid, Cities, avatar, gloire, arrive) {
		var t = Tabs.Alliance;
		var row = document.getElementById('alOverviewTab').insertRow(0);
		row.vAlign = 'top';
		row.insertCell(0).innerHTML = '<img width=25 src="' + avatar + '">';
		row.insertCell(1).innerHTML = '<A target="_tab" href="https://www.facebook.com/profile.php?id=' + fbuid + '">profile</a>';
		row.insertCell(2).innerHTML = Name;
		var cell2 = row.insertCell(3);
		cell2.width = "60";
		cell2.align = "right";
		cell2.vAlign = "top";
		cell2.innerHTML = addCommas(Might);
		var cell2 = row.insertCell(4);
		cell2.width = "60";
		cell2.align = "right";
		cell2.vAlign = "top";
		cell2.innerHTML = addCommas(gloire);
		row.insertCell(5).innerHTML = Cities;
		row.insertCell(6).innerHTML = officerId2String(Position);
		row.insertCell(7).innerHTML = dip;
		row.insertCell(8).innerHTML = LastLogin;
		row.insertCell(9).innerHTML = arrive;
	},
	_addTabHeader: function () {
		var t = Tabs.Alliance;
		var row = document.getElementById('alOverviewTab').insertRow(0);
		row.vAlign = 'top';
		row.insertCell(0).innerHTML = "<u><b>Avatar</b></u>";
		row.insertCell(1).innerHTML = "<u><b>Facebook</b></u>";
		row.insertCell(2).innerHTML = "<u><b>Name</b></u>";
		row.insertCell(3).innerHTML = "<u><b>Might</b></u>";
		row.insertCell(4).innerHTML = "<u><b>Glory</b></u>";
		row.insertCell(5).innerHTML = "<u><b>Cities</b></u>";
		row.insertCell(6).innerHTML = "<u><b>Position</b></u>";
		row.insertCell(7).innerHTML = "<u><b>DIP</b></u>";
		row.insertCell(8).innerHTML = "<u><b>Last Login</b></u>";
		row.insertCell(9).innerHTML = "<u><b>Joined</b></u>";
	},
	paintDiplomacy: function () {
		document.getElementById('alOverviewTab').innerHTML = "";
		document.getElementById('progress').innerHTML = "";
		var m = '<TR><TD colspan=4 style=\'background: #33CC66;\' align=center><B>Friendly: </b></td></tr>';
		if (Seed.allianceDiplomacies['friendly'] == null) m += '<TR><TD>No Friendlies found...</td>';
		else m += '<TABLE class=xtab><TR><TD>Alliance Name</td><TD>Members</td></tr>';
		for (k in Seed.allianceDiplomacies['friendly']) {
			m += '<TR><TD>' + Seed.allianceDiplomacies['friendly'][k]['allianceName'] + '</td>';
			m += '<TD align=center>' + Seed.allianceDiplomacies['friendly'][k]['membersCount'] + '</td>';
		}
		m += '<TR></tr></table>';
		m += '<TR><TD colspan=4 style=\'background: #CC0033;\' align=center><B>Hostile: </b></td></tr>';
		if (Seed.allianceDiplomacies['hostile'] == null) m += '<TR><TD>No Hostiles found...</td>';
		else m += '<TABLE class=xtab><TR><TD>Alliance Name</td><TD>Members</td></tr>';
		for (k in Seed.allianceDiplomacies["hostile"]) {
			m += '<TR><TD>' + Seed.allianceDiplomacies["hostile"][k]['allianceName'] + '</td>';
			m += '<TD align=center>' + Seed.allianceDiplomacies["hostile"][k]['membersCount'] + '</td>';
		}
		m += '<TR></tr></table>';
		m += '<TR><TD colspan=4 style=\'background: #FF6633;\' align=center><B>Friendly towards us: </b></td></tr>';
		if (Seed.allianceDiplomacies['friendlyToYou'] == null) m += '<TR><TD>No Friendlies towards us found...</td>';
		else m += '<TABLE class=xtab><TR><TD>Alliance Name</td><TD>Members</td></tr>';
		for (k in Seed.allianceDiplomacies["friendlyToYou"]) {
			m += '<TR><TD>' + Seed.allianceDiplomacies["friendlyToYou"][k]['allianceName'] + '</td>';
			m += '<TD align=center>' + Seed.allianceDiplomacies["friendlyToYou"][k]['membersCount'] + '</td>';
		}
		m += '<TR></tr></table>';
		document.getElementById('alOverviewTab').innerHTML = m;
	},
	fetchAllianceMemberPage: function () {
		var t = Tabs.Alliance;
		document.getElementById('alList').disabled = true;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.pf = 0;
		new AjaxRequest(uW.g_ajaxpath + "ajax/allianceGetInfo.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (transport) {
				var rslt = eval("(" + transport.responseText + ")");
				t.totalmembers = (rslt["allianceInfo"]["members"]);
				for (var i = 1; i <= 10; i++) {
					params.pageNo = i;
					params.pf = 0;
					new AjaxRequest(uW.g_ajaxpath + "ajax/allianceGetMembersInfo.php" + uW.g_ajaxsuffix, {
						method: "post",
						parameters: params,
						onSuccess: function (transport) {
							var info = eval("(" + transport.responseText + ")");
							if (info.ok) {
								for (var k in info["memberInfo"]) {
									if (info["memberInfo"][k]["might"] != undefined && !t.error) {
										t.alliancemembers.push({
											Name: info["memberInfo"][k]["name"],
											Might: parseInt(info["memberInfo"][k]["might"]),
											Cities: parseInt(info["memberInfo"][k]["cities"]),
											Position: parseInt(info["memberInfo"][k]["positionType"]),
											dip: parseInt(info["memberInfo"][k]["daysInPosition"]),
											LastLogin: info["memberInfo"][k]["lastLogin"],
											uid: parseInt(info["memberInfo"][k]["userId"]),
											fbuid: parseInt(info["memberInfo"][k]["fbuid"]),
											avatarurl: info["memberInfo"][k]["avatarurl"],
											glory: parseInt(info["memberInfo"][k]["glory"]),
											dateJoined: info["memberInfo"][k]["dateJoined"],
										});
									}
									document.getElementById('alOverviewTab').innerHTML = "";
									t.paintMembers();
								}
								if (!t.error) document.getElementById('progress').innerHTML = '(' + (t.alliancemembers.length) + '/' + t.totalmembers + ')';
								if (t.alliancemembers.length >= t.totalmembers) document.getElementById('alList').disabled = false;
							} else if (info.error) {
								document.getElementById('alList').disabled = false;
								document.getElementById('progress').innerHTML = "ERROR!";
								t.error = true;
							}
						},
						onFailure: function (rslt) {;
							notify({
								errorMsg: 'AJAX error'
							});
						},
					});
				}
			},
			onFailure: function (rslt) {;
				notify({
					errorMsg: 'AJAX error'
				});
			},
		});
	},
	hide: function () {
		mainPop.div.style.width = 750 + 'px';
	},
	show: function () {
		var t = Tabs.Alliance;
		mainPop.div.style.width = 750 + 'px';
	},
};
/*********************************** IRC TAB ***********************************/
Tabs.IRC = {
	tabOrder: 1000,
	tabLabel: "IRC",
	myDiv: null,
	seenLog: {},
	init: function (div) {
		var t = Tabs.IRC;
		t.myDiv = div;
		t.myDiv.style.maxHeight = '730px';
		var m = '<DIV class=ptstat>IRC Bot Command Server</div><TABLE align=center cellpadding=1 cellspacing=0></table>';
		m += '<INPUT id=ptIRCcmdEnable type=checkbox ' + (IRCOptions.IRCCmdEnable ? 'CHECKED ' : '') + '> Global Enable (this must be checked for all other options to work)<br>';
		m += '<DIV class=ptstat>IRC Bot Options</div><TABLE align=center cellpadding=1 cellspacing=0></table>';
		m += '<INPUT id=ptIRCcmdSeen type=checkbox ' + (IRCOptions.IRCCmdSeen.enable ? 'CHECKED ' : '') + '> Respond to "!seen <username>" command<br>';
		m += '<INPUT id=ptIRCcmdRules type=checkbox ' + (IRCOptions.IRCCmdRules.enable ? 'CHECKED ' : '') + '> Respond to "!rules" command. ';
		m += ' Rules message: <INPUT id=ptIRCcmdRulesMsg type=text size=50 value="' + IRCOptions.IRCCmdRules.message + '">';
		t.myDiv.innerHTML = m;
		document.getElementById('ptIRCcmdEnable').addEventListener('change', function (e) {
			IRCOptions.IRCCmdEnable = e.target.checked;
			saveIRCOptions();
		}, false);
		document.getElementById('ptIRCcmdSeen').addEventListener('change', function (e) {
			IRCOptions.IRCCmdSeen.enable = e.target.checked;
			saveIRCOptions();
		}, false);
		document.getElementById('ptIRCcmdRules').addEventListener('change', function (e) {
			IRCOptions.IRCCmdRules.enable = e.target.checked;
			saveIRCOptions();
		}, false);
		document.getElementById('ptIRCcmdRulesMsg').addEventListener('change', function (e) {
			IRCOptions.IRCCmdRules.message = e.target.value;
			saveIRCOptions();
		}, false);
		var a = JSON2.parse(localStorage.getItem('IRCSeen_log_' + GetServerId()));
		if (matTypeof(a) == 'object') {
			t.seenLog = a;
		}
		window.addEventListener('unload', t.onUnload, false);
	},
	onUnload: function () {
		var t = Tabs.IRC;
		localStorage.setItem('IRCSeen_log_' + GetServerId(), JSON2.stringify(t.seenLog));
	},
	grabChat: function (uid, name, msg) {
		var t = Tabs.IRC;
		var time = "";
		var lastPost = "";
		if (!IRCOptions.IRCCmdEnable)
			return;
		if (name == null)
			return;
		if (msg == null)
			return;
		var a = msg.indexOf("<span class='time'>");
		var b = msg.indexOf('</span>', a);
		if (b > a)
			time = msg.slice(a + 19, b);
		var c = msg.indexOf("<div class='tx'>");
		var d = msg.indexOf("</div>", c);
		if (d > c)
			lastPost = msg.slice(c + 16, d);
		t.logChat(uid, name, time, lastPost);
		if (IRCOptions.IRCCmdSeen.enable) {
			if (msg.indexOf("!seen") >= 0) {
				t.processSeen(msg);
			}
		}
		if (IRCOptions.IRCCmdRules.enable) {
			if (msg.indexOf("!rules") >= 0) {
				t.processRules();
			}
		}
	},
	logChat: function (uid, name, time, lastPost) {
		var t = Tabs.IRC;
		if (lastPost.indexOf("I need help building my") >= 0)
			return;
		if (lastPost.indexOf("My embassy has") >= 0)
			return;
		if (lastPost.indexOf("My wilderness at") >= 0)
			return;
		if (lastPost.indexOf("has been scouted by") >= 0)
			return;
		if (lastPost.indexOf("has been attacked by") >= 0)
			return;
		if (lastPost.indexOf("is low on food") >= 0)
			return;
		if (lastPost.indexOf("Encamped Allies") >= 0)
			return;
		if (lastPost.indexOf("Estimated Arrival") >= 0)
			return;
		var updateSeen = {
			"name": name,
			"timestamp": time,
			"lastpost": lastPost
		};
		t.seenLog[uid] = updateSeen;
		localStorage.setItem('IRCSeen_log_' + GetServerId(), JSON2.stringify(t.seenLog));
	},
	processSeen: function (msg) {
		var t = Tabs.IRC;
		var username_string = msg.slice(msg.indexOf("!seen") + 6);
		var username = username_string.split('<');
		if (username[0].length > 2)
			Tabs.AllianceList.fetchPlayerList(username[0], t.eventGotPlayerList);
	},
	processRules: function () {
		var t = Tabs.IRC;
		var automsg = sendChat('/a ' + IRCOptions.IRCCmdRules.message);
	},
	eventGotPlayerList: function (rslt) {
		var t = Tabs.IRC;
		if (!rslt.ok) {
			var autoerrormsgPNF = sendChat("/a Player not found. Enter a valid Player.");
			return;
		}
		var uid = rslt.matchedUsers[Object.keys(rslt.matchedUsers)[0]].userId;
		if (Object.keys(t.seenLog).length > 0)
			if (uid in t.seenLog) {
				var automsg = sendChat('/a ' + t.seenLog[uid].name + ' last seen saying: ' + t.seenLog[uid].lastpost + ' @' + t.seenLog[uid].timestamp);
			} else
				var autoerrormsg = sendChat("/a I haven't seen that user");
	},
	hide: function () {
		mainPop.div.style.width = 750 + 'px';
	},
	show: function () {
		var t = Tabs.IRC;
		mainPop.div.style.width = 750 + 'px';
	},
};
/****************************  Unit Stats Calculator Tab  ******************************/
Tabs.UnitCalc = {
	tabOrder: 1100, // order to place tab in top bar
	tabLabel: 'UnitCalc', // label to show in main window tabs
	myDiv: null,
	timer: null,
	init: function (div) { // called once, upon script startup
		var t = Tabs.UnitCalc;
		t.myDiv = div;
		div.innerHTML = '<div><table><tr><td><input id=unitStatsCalcButton style="font-size:' + Options.overviewFontSize + 'px" type="submit" value="Unit Stats"></td>\
                                         <td><input id=unitStatsMaxButton style="font-size:' + Options.overviewFontSize + 'px" type="submit" value="Max Stats" disabled></td>\
                         </tr></table></div>';
		div.innerHTML += '<div id=unitStatsDiv style="maxheight:710px; height:710px; overflow-y:scroll;"></div>';
		t.paintUnitStatsCalc();
	},
	hide: function () { // called whenever the main window is hidden, or another tab is selected
		var t = Tabs.UnitCalc;
	},
	show: function () { // called whenever this tab is shown
		var t = Tabs.UnitCalc;
	},
	paintUnitStatsCalc: function () {
		var t = Tabs.UnitCalc;
		var msg = '<table>';
		msg += '<tr style="vertical-align:top"><td>\
                <div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgResearchHdr class=ptdivLink >Research&nbsp;<img id=cfgResearchArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgResearch align=left class="">';
		msg += '<table border=1>\
                <tr><td>Healing Potions </td><td><input id=ptucResHP type=text value=12 size=4></tr>\
                <tr><td>Poisoned Edge   </td><td><input id=ptucResPE type=text value=12 size=4></tr>\
                <tr><td>Metal Alloys    </td><td><input id=ptucResMA type=text value=12 size=4></tr>\
                <tr><td>Alloy Horseshoes</td><td><input id=ptucResAH type=text value=12 size=4></tr>\
                <tr><td>Fletching       </td><td><input id=ptucResFL type=text value=12 size=4></tr></table></div>';
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgGuardianHdr class=ptdivLink >Guardian&nbsp;<img id=cfgGuardianArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgGuardian align=left class="">';
		msg += '<table border=1><tr><td>Guardians</td><td>Levels</td><td>Active</td></tr>\
                       <tr><td>Wood          </td><td><input id=ptucWood  type=text value=9 size=4></td><td><input id=ptucWoodAct type=radio name=ptucGuard checked></td></tr>\
                       <tr><td>Ore<sup>*<sup></td><td><input id=ptucOre   type=text value=9 size=4></td><td><input id=ptucOreAct type=radio name=ptucGuard></td></tr>\
                       <tr><td>Food          </td><td><input id=ptucFood  type=text value=9 size=4></td><td><input id=ptucFoodAct type=radio name=ptucGuard></td></tr>\
                       <tr><td>Stone         </td><td><input id=ptucStone type=text value=9 size=4></td><td><input id=ptucStoneAct type=radio name=ptucGuard></td></tr></table>';
		msg += 'Set Bonus<input id=ptucGuardSet type=checkbox unchecked></div>';
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgItemsHdr class=ptdivLink >Items&nbsp;<img id=cfgItemsArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgItems align=left class="">';
		msg += '<table border=1>\
                <tr><td>+20atk</td><td><input id=ptucItemAtk20 type=checkbox unchecked></td>\
                    <td>+50atk</td><td><input id=ptucItemAtk50 type=checkbox unchecked></td></tr>\
                <tr><td>+20def</td><td><input id=ptucItemDef20 type=checkbox unchecked></td>\
                    <td>+50def</td><td><input id=ptucItemDef50 type=checkbox unchecked></td></tr></table></div>';
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgFeyHdr class=ptdivLink >Fey&nbsp;<img id=cfgFeyArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgFey align=left class="">';
		msg += '<table border=1><tr><td>Fey Altar Active: <input id=ptucFeyAltarActive type=checkbox unchecked></td></tr>\
                <td>Bonus Amount <input id=ptucFeyAltarBonus type=text value=40 size=4></td></tr></table>\
                <input id=ptucOreBless type=checkbox unchecked> Empowered Iron Blessing<br>\
                <input id=ptucBloodBless type=checkbox unchecked>Blood Lust<sup>*<sup></div>';
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgBritonHdr class=ptdivLink >Briton&nbsp;<img id=cfgBritonArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgBriton align=left class="">';
		msg += '<table border=1>\
                <tr><td>Strengthen Ranks  </td><td><input id=ptucResSR type=text value=10 size=4></tr>\
                <tr><td>Improved Fletching</td><td><input id=ptucResIF type=text value=10 size=4></tr></table></div>';
		msg += '</td>';
		msg += '<td style="vertical-align:top">'
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgKnightHdr class=ptdivLink >Knight&nbsp;<img id=cfgKnightArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgKnight align=left class="">';
		msg += 'Combat Points<input id="ptucKnightLevel" type=text value=300 size=4></div>';
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgOrderHdr class=ptdivLink >Order of the Round&nbsp;<img id=cfgOrderArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgOrder align=left class="">';
		msg += '<input id=ptucOrder type=checkbox unchecked>Subscriber</div>';
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Defender Stats</div>\
                Troops on Defense<input id=ptucDefending type=checkbox unchecked><br><sup>*</sup>Active only when attacking';
		msg += '</td>';
		msg += '<td style="vertical-align:top">'
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgThroneHdr class=ptdivLink >Throne&nbsp;<img id=cfgThroneArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgThrone align=left class="">';
		msg += '<table border=1>\
                <tr><td><b>TR Stats</b></td><td><b>Life</b></td><td><b>Atk</b></td><td><b>Def</b></td><td><b>Spd</b></td><td><b>Rng</b></td></tr>\
                <tr><td>TR All Buff</td>        <td><input id=ptucLifeMod    type=text value=0 size=4></td><td><input id=ptucAtkMod    type=text value=0 size=4></td><td><input id=ptucDefMod    type=text value=0 size=4></td><td><input id=ptucSpdMod    type=text value=0 size=4></td><td><input id=ptucRngMod    type=text value=0 size=4></td></tr>\
                <tr><td>TR Infantry Buff</td>   <td><input id=ptucLifeModInf type=text value=0 size=4></td><td><input id=ptucAtkModInf type=text value=0 size=4></td><td><input id=ptucDefModInf type=text value=0 size=4></td><td><input id=ptucSpdModInf type=text value=0 size=4></td><td><input id=ptucRngModInf type=text value=0 size=4></td></tr>\
                <tr><td>TR Ranged Buff</td>     <td><input id=ptucLifeModRng type=text value=0 size=4></td><td><input id=ptucAtkModRng type=text value=0 size=4></td><td><input id=ptucDefModRng type=text value=0 size=4></td><td><input id=ptucSpdModRng type=text value=0 size=4></td><td><input id=ptucRngModRng type=text value=0 size=4></td></tr>\
                <tr><td>TR Siege Buff</td>      <td><input id=ptucLifeModSig type=text value=0 size=4></td><td><input id=ptucAtkModSig type=text value=0 size=4></td><td><input id=ptucDefModSig type=text value=0 size=4></td><td><input id=ptucSpdModSig type=text value=0 size=4></td><td><input id=ptucRngModSig type=text value=0 size=4></td></tr>\
                <tr><td>TR Horsed Buff</td>     <td><input id=ptucLifeModHor type=text value=0 size=4></td><td><input id=ptucAtkModHor type=text value=0 size=4></td><td><input id=ptucDefModHor type=text value=0 size=4></td><td><input id=ptucSpdModHor type=text value=0 size=4></td><td><input id=ptucRngModHor type=text value=0 size=4></td></tr></table></div>'
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left><a id=cfgChampHdr class=ptdivLink >Champion&nbsp;<img id=cfgChampArrow height="10" src="' + GameIcons.DownArrow + '"></a></div>';
		msg += '<div id=cfgChamp align=left class="">';
		msg += '<table border=1>\
                <tr><td><b>Champ Stats</b></td><td><b>Life</b></td><td><b>Atk</b></td><td><b>Def</b></td><td><b>Spd</b></td><td><b>Rng</b></td></tr>\
                <tr><td></td>        <td><input id=ptucLifeChampMod    type=text value=0 size=4></td><td><input id=ptucAtkChampMod    type=text value=0 size=4></td><td><input id=ptucDefChampMod    type=text value=0 size=4></td><td><input id=ptucSpdChampMod    type=text value=0 size=4></td><td><input id=ptucRngChampMod    type=text value=0 size=4></td></tr>\
                </table></div>'
		msg += '<div class="ptdivHeader" style="background: #99CCFF;" align=left>Unit Stat</div>';
		msg += '<div>';
		msg += '<table border=1><tr><td><b>Unit</b></td><td><b>Life</b></td><td><b>Atk</b></td><td><b>Def</b></td><td><b>Speed</b></td><td><b>Range</b></td></tr>'
		var ui;
		for (var iu in uW.cm.UNIT_TYPES) {
			ui = uW.cm.UNIT_TYPES[iu];
			cost = uW.unitcost['unt' + ui]; //  NAME, Food, Wood, Stone, Ore, ?, IdlePop, Time
			stats = uW.unitstats['unt' + ui]; //  Attack, Defense, Speed, Range, Life
			msg += '<tr><td>' + cost[0].substr(0, 16) + '</td><td id=ptucTrp' + (ui) + 'Life>' + stats[0] + '</td>\
                                                           <td id=ptucTrp' + (ui) + 'Atk>' + stats[1] + '</td>\
                                                           <td id=ptucTrp' + (ui) + 'Def>' + stats[2] + '</td>\
                                                           <td id=ptucTrp' + (ui) + 'Spd>' + stats[3] + '</td>\
                                                           <td id=ptucTrp' + (ui) + 'Rng>' + stats[4] + '</td></tr>';
		}
		msg += '</table></div>';
		msg += '</td></tr></table>';
		document.getElementById('unitStatsDiv').innerHTML = msg;
		document.getElementById('cfgResearchHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgResearch");
		}, false);
		document.getElementById('cfgGuardianHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgGuardian");
		}, false);
		document.getElementById('cfgItemsHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgItems");
		}, false);
		document.getElementById('cfgFeyHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgFey");
		}, false);
		document.getElementById('cfgBritonHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgBriton");
		}, false);
		document.getElementById('cfgThroneHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgThrone");
		}, false);
		document.getElementById('cfgChampHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgChamp");
		}, false);
		document.getElementById('cfgKnightHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgKnight");
		}, false);
		document.getElementById('cfgOrderHdr').addEventListener('click', function () {
			ToggleDivDisplay(500, 500, "cfgOrder");
		}, false);
		// Event listener Order of the Round Table
		document.getElementById('ptucOrder').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		// Event listener Knight Level
		document.getElementById('ptucKnightLevel').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 1;
			if (e.target.value < 1) alert('Enter positive numbers!');
			t.modifyUnitResearch();
		}, false);
		// Event listener Fey Altar
		document.getElementById('ptucFeyAltarActive').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucFeyAltarBonus').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 1;
			if (e.target.value < 1 || e.target.value > 40) alert('Enter a numbers between 1-40!');
			t.modifyUnitResearch();
		}, false);
		// Event listener Guardian
		document.getElementById('ptucWood').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucOre').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucFood').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucStone').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucWoodAct').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucOreAct').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucFoodAct').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucStoneAct').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucGuardSet').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucDefending').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucOreBless').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucBloodBless').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		//Event listener Item Boosts
		document.getElementById('ptucItemAtk20').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucItemAtk50').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucItemDef20').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucItemDef50').addEventListener('change', function (e) {
			t.modifyUnitResearch();
		}, false);
		// Event listener Research Level
		document.getElementById('ptucResHP').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.value < 0 || e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucResPE').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.value < 0 || e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucResMA').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.value < 0 || e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucResAH').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.value < 0 || e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucResFL').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.value < 0 || e.target.vale > 12) alert('Enter a number between 0-12!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucResSR').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.value < 0 || e.target.vale > 10) alert('Enter a number between 0-10!');
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucResIF').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			if (e.target.value < 0 || e.target.vale > 10) alert('Enter a number between 0-10!');
			t.modifyUnitResearch();
		}, false);
		// Event listener Throne
		document.getElementById('ptucLifeMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucLifeModInf').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucLifeModRng').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucLifeModSig').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucLifeModHor').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucAtkMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucAtkModInf').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucAtkModRng').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucAtkModSig').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucAtkModHor').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucDefMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucDefModInf').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucDefModRng').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucDefModSig').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucDefModHor').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucSpdMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucSpdModInf').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucSpdModRng').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucSpdModSig').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucSpdModHor').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucRngMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucRngModInf').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucRngModRng').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucRngModSig').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucRngModHor').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		// Event listener Champ
		document.getElementById('ptucLifeChampMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucAtkChampMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucDefChampMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucSpdChampMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		document.getElementById('ptucRngChampMod').addEventListener('change', function (e) {
			if (isNaN(e.target.value)) e.target.value = 0;
			t.modifyUnitResearch();
		}, false);
		t.modifyUnitResearch();
	},
	modifyUnitResearch: function () {
		var t = Tabs.UnitCalc;
		var resLife = (5 * parseInt(document.getElementById('ptucResHP').value) / 100);
		var resAtk = (5 * parseInt(document.getElementById('ptucResPE').value) / 100);
		var resDef = (5 * parseInt(document.getElementById('ptucResMA').value) / 100);
		var resSpd = (5 * parseInt(document.getElementById('ptucResAH').value) / 100);
		var resRng = (5 * parseInt(document.getElementById('ptucResFL').value) / 100);
		resRng += (2 * parseInt(document.getElementById('ptucResIF').value) / 100);
		var knight = parseFloat(document.getElementById('ptucKnightLevel').value) / 200;
		var guardLife = t.woodGuardTable(parseInt(document.getElementById('ptucWood').value));
		var guardAtk = t.oreGuardTable(parseInt(document.getElementById('ptucOre').value));
		var guardLifeAct = document.getElementById('ptucWoodAct').checked ? 1 : 0;
		var guardAtkAct = document.getElementById('ptucOreAct').checked ? 1 : 0;
		var guardSetAct = document.getElementById('ptucGuardSet').checked ? 1 : 0;
		var guardOreBless = document.getElementById('ptucOreBless').checked ? 1 : 0;
		var bloodLustBlessLife = document.getElementById('ptucBloodBless').checked ? 0.75 : 1;
		var bloodLustBlessAtkSpd = document.getElementById('ptucBloodBless').checked ? 1.5 : 1;
		var defending = document.getElementById('ptucDefending').checked ? 1 : 0;
		var itemAtk = 0;
		var itemDef = 0;
		var feyAltarAct = document.getElementById('ptucFeyAltarActive').checked ? 1 : 0;
		var feyAltar = parseFloat(document.getElementById('ptucFeyAltarBonus').value) / 100;
		var orderDef = 0;
		var champLife = parseFloat(document.getElementById('ptucLifeChampMod').value);
		var champAtk = parseFloat(document.getElementById('ptucAtkChampMod').value);
		var champDef = parseFloat(document.getElementById('ptucDefChampMod').value);
		var champSpd = parseFloat(document.getElementById('ptucSpdChampMod').value);
		var champRng = parseFloat(document.getElementById('ptucRngChampMod').value);
		if (document.getElementById('ptucOrder').checked)
			orderDef = 0.15;
		if (document.getElementById('ptucItemAtk20').checked)
			itemAtk = 0.2 + itemAtk;
		if (document.getElementById('ptucItemAtk50').checked)
			itemAtk = 0.5 + itemAtk;
		if (document.getElementById('ptucItemDef20').checked)
			itemDef = 0.2 + itemDef;
		if (document.getElementById('ptucItemDef50').checked)
			itemDef = 0.5 + itemDef;
		if (defending)
			bloodLustBlessAtkSpd = 1;
		// calculate guardian
		if (guardSetAct) { //if you have set bonus
			if (guardLifeAct && defending) { //if your want defending troop stats
				guardLife = (guardLife / 2 + guardLife) / 100;
				guardAtk = 0;
			} else if (guardAtkAct) {
				if (defending) {
					guardAtk = 0;
					guardLife = guardLife / 200;
				} else {
					guardAtk = (1.5 * guardAtk / 100) + guardOreBless * 0.15 + guardOreBless * (1.5 * guardAtk / 100);
					guardLife = 0;
				}
			} else {
				if (defending) {
					guardAtk = 0;
					guardLife = guardLife / 200;
				} else {
					guardAtk = (guardAtk / 200) + guardOreBless * 0.15 + guardOreBless * 0.15 * (guardAtk / 200);
					guardLife = 0;
				}
			}
		} else { // don't have set bonus
			if (guardLifeAct && defending) {
				guardLife = guardLife / 100;
				guardAtk = 0;
			} else if (guardAtkAct && !defending) {
				guardAtk = (guardAtk / 100) + guardOreBless * 0.15 + guardOreBless * 0.15 * (guardAtk / 100);
				guardLife = 0;
			} else {
				guardAtk = 0;
				guardLife = 0;
			}
		}
		//        for (ui=1; ui<nTroopType+1; ui++){
		var ui;
		for (var iu in uW.cm.UNIT_TYPES) {
			ui = uW.cm.UNIT_TYPES[iu];
			var lifchampfeyadj = champLife + (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][0];
			lifchampfeyadj = Math.max(lifchampfeyadj, (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][0] * 0.01);
			var atkchampfeyadj = champAtk + (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][1];
			atkchampfeyadj = Math.max(atkchampfeyadj, (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][1] * 0.01);
			var defchampfeyadj = champDef + (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][2];
			defchampfeyadj = Math.max(defchampfeyadj, (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][2] * 0.01);
			var spdchampfeyadj = champSpd + (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][3];
			spdchampfeyadj = Math.max(spdchampfeyadj, (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][3] * 0.01);
			var rngchampfeyadj = champRng + (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][4];
			rngchampfeyadj = Math.max(rngchampfeyadj, (1 + feyAltar * feyAltarAct) * uW.unitstats['unt' + ui][4] * 0.01);
			switch (unsafeWindow.cm.unitFrontendType[ui]) {
			case "infantry":
				if (ui < 10) {
					document.getElementById('ptucTrp' + ui + 'Life').innerHTML = t.round1decimals((1 + guardLife) * lifchampfeyadj * bloodLustBlessLife * (1 + (resLife + t.maxBuff('Life', parseFloat(document.getElementById('ptucLifeMod').value), parseFloat(document.getElementById('ptucLifeModInf').value)) / 100)));
					document.getElementById('ptucTrp' + ui + 'Atk').innerHTML = t.round1decimals((1 + guardAtk) * atkchampfeyadj * bloodLustBlessAtkSpd * (1 + (resAtk + knight + itemAtk + t.maxBuff('Attack', parseFloat(document.getElementById('ptucAtkMod').value), parseFloat(document.getElementById('ptucAtkModInf').value)) / 100)));
					document.getElementById('ptucTrp' + ui + 'Def').innerHTML = t.round1decimals(defchampfeyadj * (1 + (resDef + knight + itemDef + orderDef + t.maxBuff('Defense', parseFloat(document.getElementById('ptucDefMod').value), parseFloat(document.getElementById('ptucDefModInf').value)) / 100)));
					document.getElementById('ptucTrp' + ui + 'Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), parseFloat(document.getElementById('ptucSpdModInf').value)) / 100)));
					document.getElementById('ptucTrp' + ui + 'Rng').innerHTML = t.round1decimals(rngchampfeyadj * (1 + (t.maxBuff('Range', parseFloat(document.getElementById('ptucRngMod').value), parseFloat(document.getElementById('ptucRngModInf').value)) / 100)));
				} else {
					//Trp13 - blood
					//verified on 11/30 that bloods don't use infantry buff for atk/def. other stats unknown
					//Trp14 - exec
					//verified on 11/30 that exec don't use infantry buff for atk/def. other stats unknown
					document.getElementById('ptucTrp' + ui + 'Life').innerHTML = t.round1decimals((1 + guardLife) * lifchampfeyadj * bloodLustBlessLife * (1 + (resLife + t.maxBuff('Life', parseFloat(document.getElementById('ptucLifeMod').value), 0) / 100)));
					document.getElementById('ptucTrp' + ui + 'Atk').innerHTML = t.round1decimals((1 + guardAtk) * atkchampfeyadj * bloodLustBlessAtkSpd * (1 + (resAtk + knight + itemAtk + t.maxBuff('Attack', parseFloat(document.getElementById('ptucAtkMod').value), 0) / 100)));
					document.getElementById('ptucTrp' + ui + 'Def').innerHTML = t.round1decimals(defchampfeyadj * (1 + (resDef + knight + itemDef + orderDef + t.maxBuff('Defense', parseFloat(document.getElementById('ptucDefMod').value), 0) / 100)));
					document.getElementById('ptucTrp' + ui + 'Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), 0) / 100)));
					document.getElementById('ptucTrp' + ui + 'Rng').innerHTML = t.round1decimals(rngchampfeyadj * (1 + (t.maxBuff('Range', parseFloat(document.getElementById('ptucRngMod').value), 0) / 100)));
				}
				break;
			case "ranged":
				document.getElementById('ptucTrp' + ui + 'Life').innerHTML = t.round1decimals((1 + guardLife) * lifchampfeyadj * bloodLustBlessLife * (1 + (resLife + t.maxBuff('Life', parseFloat(document.getElementById('ptucLifeMod').value), parseFloat(document.getElementById('ptucLifeModRng').value)) / 100)));
				document.getElementById('ptucTrp' + ui + 'Atk').innerHTML = t.round1decimals((1 + guardAtk) * atkchampfeyadj * bloodLustBlessAtkSpd * (1 + (resAtk + knight + itemAtk + t.maxBuff('Attack', parseFloat(document.getElementById('ptucAtkMod').value), parseFloat(document.getElementById('ptucAtkModRng').value)) / 100)));
				document.getElementById('ptucTrp' + ui + 'Def').innerHTML = t.round1decimals(defchampfeyadj * (1 + (resDef + knight + itemDef + orderDef + t.maxBuff('Defense', parseFloat(document.getElementById('ptucDefMod').value), parseFloat(document.getElementById('ptucDefModRng').value)) / 100)));
				document.getElementById('ptucTrp' + ui + 'Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), parseFloat(document.getElementById('ptucSpdModRng').value)) / 100)));
				document.getElementById('ptucTrp' + ui + 'Rng').innerHTML = t.round1decimals(rngchampfeyadj * (1 + (resRng + t.maxBuff('Range', parseFloat(document.getElementById('ptucRngMod').value), parseFloat(document.getElementById('ptucRngModRng').value)) / 100)));
				break;
			case "horsed":
				document.getElementById('ptucTrp' + ui + 'Life').innerHTML = t.round1decimals((1 + guardLife) * lifchampfeyadj * (1 + (resLife + t.maxBuff('Life', parseFloat(document.getElementById('ptucLifeMod').value), parseFloat(document.getElementById('ptucLifeModHor').value)) / 100)));
				document.getElementById('ptucTrp' + ui + 'Atk').innerHTML = t.round1decimals((1 + guardAtk) * atkchampfeyadj * (1 + (resAtk + knight + itemAtk + t.maxBuff('Attack', parseFloat(document.getElementById('ptucAtkMod').value), parseFloat(document.getElementById('ptucAtkModHor').value)) / 100)));
				document.getElementById('ptucTrp' + ui + 'Def').innerHTML = t.round1decimals(defchampfeyadj * (1 + (resDef + knight + itemDef + orderDef + t.maxBuff('Defense', parseFloat(document.getElementById('ptucDefMod').value), parseFloat(document.getElementById('ptucDefModHor').value)) / 100)));
				document.getElementById('ptucTrp' + ui + 'Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (resSpd + t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), parseFloat(document.getElementById('ptucSpdModHor').value)) / 100)));
				document.getElementById('ptucTrp' + ui + 'Rng').innerHTML = t.round1decimals(rngchampfeyadj * (1 + (t.maxBuff('Range', parseFloat(document.getElementById('ptucRngMod').value), parseFloat(document.getElementById('ptucRngModHor').value)) / 100)));
				if (ui == 17)
					document.getElementById('ptucTrp' + ui + 'Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), parseFloat(document.getElementById('ptucSpdModHor').value)) / 100)));
				break;
			case "specialist":
				//Trp15 - siege wall
				document.getElementById('ptucTrp' + ui + 'Life').innerHTML = t.round1decimals((1 + guardLife) * lifchampfeyadj * (1 + (resLife + t.maxBuff('Life', parseFloat(document.getElementById('ptucLifeMod').value), 0) / 100)));
				document.getElementById('ptucTrp' + ui + 'Atk').innerHTML = t.round1decimals((1 + guardAtk) * atkchampfeyadj * (1 + (resAtk + knight + itemAtk + t.maxBuff('Attack', parseFloat(document.getElementById('ptucAtkMod').value), 0) / 100)));
				document.getElementById('ptucTrp' + ui + 'Def').innerHTML = t.round1decimals(defchampfeyadj * (1 + (resDef + knight + itemDef + orderDef + t.maxBuff('Defense', parseFloat(document.getElementById('ptucDefMod').value), 0) / 100)));
				document.getElementById('ptucTrp' + ui + 'Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (resSpd + t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), 0) / 100)));
				document.getElementById('ptucTrp' + ui + 'Rng').innerHTML = t.round1decimals(rngchampfeyadj * (1 + (t.maxBuff('Range', parseFloat(document.getElementById('ptucRngMod').value), 0) / 100)));
				break;
			case "siege":
				if (ui == 10) {
					//Trp10 - ball
					document.getElementById('ptucTrp10Life').innerHTML = t.round1decimals((1 + guardLife) * lifchampfeyadj * (1 + (resLife + t.maxBuff('Life', parseFloat(document.getElementById('ptucLifeMod').value), parseFloat(document.getElementById('ptucLifeModSig').value)) / 100)));
					document.getElementById('ptucTrp10Atk').innerHTML = t.round1decimals((1 + guardAtk) * atkchampfeyadj * (1 + (resAtk + knight + itemAtk + t.maxBuff('Attack', parseFloat(document.getElementById('ptucAtkMod').value), parseFloat(document.getElementById('ptucAtkModSig').value)) / 100)));
					document.getElementById('ptucTrp10Def').innerHTML = t.round1decimals(defchampfeyadj * (1 + (resDef + knight + itemDef + orderDef + t.maxBuff('Defense', parseFloat(document.getElementById('ptucDefMod').value), parseFloat(document.getElementById('ptucDefModSig').value)) / 100)));
					document.getElementById('ptucTrp10Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (resSpd + t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), parseFloat(document.getElementById('ptucSpdModSig').value)) / 100)));
					document.getElementById('ptucTrp10Rng').innerHTML = t.round1decimals(rngchampfeyadj * (1 + (resRng + t.maxBuff('Range', parseFloat(document.getElementById('ptucRngMod').value), parseFloat(document.getElementById('ptucRngModSig').value)) / 100)));
				} else {
					document.getElementById('ptucTrp' + ui + 'Life').innerHTML = t.round1decimals((1 + guardLife) * lifchampfeyadj * (1 + (resLife + t.maxBuff('Life', parseFloat(document.getElementById('ptucLifeMod').value), parseFloat(document.getElementById('ptucLifeModSig').value)) / 100)));
					document.getElementById('ptucTrp' + ui + 'Atk').innerHTML = t.round1decimals((1 + guardAtk) * atkchampfeyadj * (1 + (resAtk + knight + itemAtk + t.maxBuff('Attack', parseFloat(document.getElementById('ptucAtkMod').value), parseFloat(document.getElementById('ptucAtkModSig').value)) / 100)));
					document.getElementById('ptucTrp' + ui + 'Def').innerHTML = t.round1decimals(defchampfeyadj * (1 + (resDef + knight + itemDef + orderDef + t.maxBuff('Defense', parseFloat(document.getElementById('ptucDefMod').value), parseFloat(document.getElementById('ptucDefModSig').value)) / 100)));
					document.getElementById('ptucTrp' + ui + 'Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (resSpd + t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), parseFloat(document.getElementById('ptucSpdModSig').value)) / 100)));
					document.getElementById('ptucTrp' + ui + 'Rng').innerHTML = t.round1decimals(rngchampfeyadj * (1 + (resRng + t.maxBuff('Range', parseFloat(document.getElementById('ptucRngMod').value), parseFloat(document.getElementById('ptucRngModSig').value)) / 100)));
					if (ui == 9 || ui == 11)
						document.getElementById('ptucTrp' + ui + 'Rng').innerHTML = t.round1decimals(rngchampfeyadj * (1 + (t.maxBuff('Range', parseFloat(document.getElementById('ptucRngMod').value), parseFloat(document.getElementById('ptucRngModSig').value)) / 100)));
					if (ui == 21)
						document.getElementById('ptucTrp' + ui + 'Spd').innerHTML = t.round1decimals(spdchampfeyadj * (1 + (t.maxBuff('Speed', parseFloat(document.getElementById('ptucSpdMod').value), parseFloat(document.getElementById('ptucSpdModSig').value)) / 100)));
				}
				break;
			}
		}
	},
	maxBuff: function (stat, a, b) {
		if (a + b > unsafeWindow.cm.thronestats.boosts[stat].Max)
			return unsafeWindow.cm.thronestats.boosts[stat].Max;
		else if (a + b < unsafeWindow.cm.thronestats.boosts[stat].Min)
			return unsafeWindow.cm.thronestats.boosts[stat].Min;
		else
			return a + b;
	},
	round1decimals: function (number) {
		return Math.round(number * 10) / 10;
	},
	woodGuardTable: function (number) {
		if (number == '1')
			return 1;
		else if (number == '2')
			return 2;
		else if (number == '3')
			return 3;
		else if (number == '4')
			return 4;
		else if (number == '5')
			return 6;
		else if (number == '6')
			return 8;
		else if (number == '7')
			return 10;
		else if (number == '8')
			return 13;
		else if (number == '9')
			return 16;
		else if (number == '10')
			return 20;
		else if (number == '11')
			return 25;
		else if (number == '12')
			return 35;
		else
			return 0;
	},
	oreGuardTable: function (number) {
		if (number == '1')
			return 2;
		else if (number == '2')
			return 4;
		else if (number == '3')
			return 6;
		else if (number == '4')
			return 8;
		else if (number == '5')
			return 12;
		else if (number == '6')
			return 16;
		else if (number == '7')
			return 20;
		else if (number == '8')
			return 26;
		else if (number == '9')
			return 32;
		else if (number == '10')
			return 40;
		else if (number == '11')
			return 50;
		else if (number == '12')
			return 65;
		else
			return 0;
	},
}
/*********************************** Accuracy Matrix Tab ***********************************/
Tabs.Accuracy = {
	tabOrder: 1200,
	tabLabel: 'Accuracy',
	cont: null,
	init: function (div) {
		var t = Tabs.Accuracy;
		t.cont = div;
		var main = '<DIV class=ptstat>ACCURACY MATRIX<TABLE align=center cellpadding=1 cellspacing=0></table></div>';
		main += '<DIV style="height:500px; width:720px; overflow-x:scroll;"><TABLE class=ptTab align=left><TR>';
		main += '<TD></td><TD>Target</td></tr>';
		main += '<TR><TD></td>';
		var z = uW.cm.WorldSettings.getSettingAsObject("UNIT_ACCURACY_MODIFIER");
		var keyz = unsafeWindow.Object.keys(z);
		var troopa, troopb;
		var unitsarr = [];
		for (j in unsafeWindow.unitcost) {
			unitsarr.push(0);
		}	
		
		for (iu = 1; iu < unitsarr.length + 2; iu++) {
			if (iu < 13) main += '<TD>' + uW.unitcost['unt' + iu][0] + '</td>';
			else if (iu == 13) main += '<TD>WM Crossbow</td>';
			else if (iu > 19) main += '<TD>' + uW.unitcost['unt' + (iu + 1)][0] + '</td>';
			else main += '<TD>' + uW.unitcost['unt' + (iu - 1)][0] + '</td>';
		}	
		main += '</tr>';

		for (iu = 1; iu < unitsarr.length + 2; iu++) {
			if (iu < 13) main += '<TR><TD>' + uW.unitcost['unt' + iu][0] + '</td>';
			else if (iu == 13) main += '<TR><TD>WM Crossbow</td>';
			else if (iu > 19) main += '<TR><TD>' + uW.unitcost['unt' + (iu + 1)][0] + '</td>';
			else main += '<TR><TD>' + uW.unitcost['unt' + (iu - 1)][0] + '</td>';
			troopa = keyz[iu - 1];
			for (ju = 1; ju < unitsarr.length + 2; ju++) {
				troopb = keyz[ju - 1];
				if (!z[troopa] || !z[troopa][troopb])
					main += '<TD>???</td>';
				else
					main += '<TD>' + z[troopa][troopb] + '</td>';
			}
			main += '</tr>';
		}
		main += '</table></div>';
		t.cont.innerHTML = main;
	},
	hide: function () {},
	show: function () {},
}
/*************** Defend Tab **********/
Tabs.Defend = {
	cont: null,
	displayTimer: null,
	tabLabel: 'Defend',
	state: null,
	curTabBut: null,
	curTabName: null,
	BOAttackTimer: null,
	sourceCity: {},
	destinationCity: {},
	champion: {},
	rows: [],
	iused: new Array(),
	init: function (div) {
		var t = Tabs.Defend;
		t.cont = div;
		t.state = null;
		clearTimeout(t.displayTimer);
		uW.ptDefendFav = Options.DefendFav;
	},
	getContent: function () {
		var t = Tabs.Defend;
		return t.cont;
	},
	hide: function () {
		var t = Tabs.Defend;
		t.state = null;
		clearTimeout(t.displayTimer);
	},
	show: function () {
		var t = Tabs.Defend;
		setTimeout(t.Refreshtroops, 10000);
		var rownum = 0;
		var ModelCity = {};
		if (t.state == null) {
			m = "<DIV class=ptstat><b>QUICK MARCH TOOL</b></div>";
			m += "<div id='statpourDAA'></div>";
			m += "<TABLE width=600 class=ptTab border=0 align=center>\
           <tr><td colspan=4 align=center><input type=button id=DAAaction value='Set Defense'>&nbsp</td></tr>\
	   <tr align=center valign=top><td width=130><b><u>City Select</b></u><br><span id=DAAsrcRptspeedcity></span></td>\
           </tr><tr align=center valign=top>\
           <td colspan=4 align=left>\
	   <table border=0 bordercolor=black cellspacing=0 cellpadding=0 width=100% style='text-align:center'>\
	   <tr><td rowspan=" + nTroopType + 1 + "><div id=DAAstatsource></div></td><td colspan=2></td></tr>";
			m += "</table></td></tr>";
			m += "</td></tr></table>\
              <DIV class=ptstat>Saved Unit Configuration :</div><TABLE><tr><td colspan=2><select id=DBO_AT_Fav></select><input type=button value='Reset' id=DBO_AT_Fav_Sup><input type=button value='Reset All' id=DBO_AT_Fav_RESET></td><td colspan=2>New : <input type=type id=DBO_AT_Fav_Nom size=10 maxlength=12>&nbsp;<input type=button value='Save Troops' id=DBO_AT_Fav_ajou>\
              <tr><td colspan=4><div id=ptDAAStatus style='overflow-y:auto; max-height:50px; height: 50px;'></div></td></tr></table>";
			t.cont.innerHTML = m;
			t.statpourRAA = ById('statpourDAA');
			//Gestion des favoris  
			t.Favoris = ById('DBO_AT_Fav');

			function metajourfavori() {
				t.Favoris.innerHTML = "<option value=''>...</option>";
				var lisf = Options.DefendFav;
				for (var m in lisf) {
					var lis = lisf[m];
					t.Favoris.innerHTML += "<option value='" + m + "'>" + lis[0] + "</option>";
				}
			}
			ById("DBO_AT_Fav_RESET").addEventListener('click', function () {
				Options.DefendFav = {};
				saveOptions();
				metajourfavori();
			}, false);
			ById("DBO_AT_Fav_Sup").addEventListener('click', function () {
				numfav = ById("DBO_AT_Fav").value;
				if (numfav != "") {
					Options.DefendFav[numfav] = {};
					delete Options.DefendFav[numfav];
					saveOptions();
					metajourfavori();
				}
			}, false);
			ById("DBO_AT_Fav_ajou").addEventListener('click', function () {
				if (ById("DBO_AT_Fav_Nom").value == "") {
					alert("Please fill in a name!");
					return;
				}
				var a = ById("DBO_AT_Fav_Nom").value;
				Options.DefendFav[a] = {};
				var lisf = Options.DefendFav[a];
				lisf[0] = ById("DBO_AT_Fav_Nom").value;
				for (var ui in uW.cm.UNIT_TYPES) lisf[uW.cm.UNIT_TYPES[ui]] = ById("DAAnbunit" + uW.cm.UNIT_TYPES[ui]).value;
				ById("DBO_AT_Fav_Nom").value = "";
				saveOptions();
				metajourfavori();
			}, false);
			ById("DBO_AT_Fav").addEventListener('change', function () {
				numfav = ById("DBO_AT_Fav").value;
				if (numfav == "") {
					for (var ui in uW.cm.UNIT_TYPES) ById("DAAnbunit" + uW.cm.UNIT_TYPES[ui]).value = 0;
				} else {
					var lisf = Options.DefendFav[numfav];
					for (var m in lisf) {
						if (m > 0)
							if (ById("DAAnbunit" + m)) ById("DAAnbunit" + m).value = lisf[m];
					}
				}
			}, false);
			// Fin gestion des favoris
			t.statutRAA = ById('ptDAAStatus');
			t.destinationCityx = 0;
			t.destinationCityy = 0;
			t.destinationCityx.value = 0;
			t.destinationCityy.value = 0;
			t.actionRAA = ById('DAAaction');
			t.actionRAA.addEventListener('click', function () {
				t.clickATTAQUEDo(4, 0);
			}, false);
			var dcp0 = new CdispCityPicker('ptDAA0', ById('DAAsrcRptspeedcity'), false, t.clickRAACitySourceSelect, Cities.byID[unsafeWindow.currentcityid].idx);
			metajourfavori();
			t.clickRAACitySourceSelect(t.sourceCity);
			//        var closestNum = t.getclosestcity();
			//		t.dcp1 = new CdispCityPicker ('ptmarch_citydest', ById('DBOVilleProche'), false, t.estimerRes, null).bindToXYboxes(ById("DAAtypetrpx"),ById("DAAtypetrpy"));
		}
	},
	getclosestcity: function () {
		var t = Tabs.Defend;
		var x1 = parseInt(t.sourceCity.x);
		var x2 = parseInt(t.destinationCityx.value);
		var y1 = parseInt(t.sourceCity.y);
		var y2 = parseInt(t.destinationCityy.value);
		var dist = distance(x1, y1, x2, y2);
		var closestDist = 999999;
		var closestLoc = null;
		var closestNum = 1;
		for (var c = 0; c < Cities.numCities; c++) {
			var city = Cities.cities[c];
			var dist = distance(city.x, city.y, x2, y2);
			if (dist < closestDist) {
				closestDist = dist;
				closestLoc = city.x + ',' + city.y;
				closestNum = c;
			}
		}
		return closestNum;
	},
	enregistreAttack: function () {
		var t = Tabs.Defend;
		if (t.BOHorloge.value.match("^[0-9]{2}:[0-9]{2}:[0-9]{2}$")) {
			var horloge = t.BOHorloge.value;
			Options.DefendHorloge = horloge;
			var ndate = new Date();
			ndate.setHours(horloge.substr(0, 2));
			ndate.setMinutes(horloge.substr(3, 2));
			ndate.setSeconds(0);
			var atunits = new Array();
			for (var ui in uW.cm.UNIT_TYPES) atunits.push(parseInt(ById("DAAnbunit" + uW.cm.UNIT_TYPES[ui]).value));
			Options.DefendUnits = atunits;
			Options.DefendFromCity = t.sourceCity.id;
			Options.DefendKnight = ById("DAApiKnight").value;
			Options.DefendCibleX = t.destinationCityx.value;
			Options.DefendCibleY = t.destinationCityy.value;
			var x1 = parseInt(t.sourceCity.x);
			var x2 = parseInt(t.destinationCityx.value);
			var y1 = parseInt(t.sourceCity.y);
			var y2 = parseInt(t.destinationCityy.value);
			var dist = distance(x1, y1, x2, y2);
			var tempplusgrand = 0;
			for (var ui in uW.cm.UNIT_TYPES) {
				r = uW.cm.UNIT_TYPES[ui];
				if (parseInt(ById("DAAnbunit" + r).value) > 0) {
					var m = estETA(dist, r, t.sourceCity.id);
					if (tempplusgrand < m.ETA) tempplusgrand = m.ETA;
				}
			}
			var departtime = ndate.getTime() - (tempplusgrand * 1000);
			var depart = new Date()
			depart.setTime(departtime);
			var now = unixTime() * 1000;
			if (now > depart.getTime()) {
				t.BOAttackProg.innerHTML = "Depart impossible !";
				return false;
			}
			Options.DefendGoHorloge = depart.getTime();
			saveOptions();
			t.BOAttackProg.innerHTML = "Attaque sur " + Options.DefendCibleX + "," + Options.DefendCibleY + " enregistr&eacute;e";
			t.BOEditAttack.disabled = false;
		} else {
			t.BOAttackProg.innerHTML = "Mauvais format de l'horloge.";
		}
	},
	clickATTAQUEDo: function (typemarche, bouffe) {
		var t = Tabs.Defend;
		var totalunit = 0;
		if (typemarche == 3 && ById("DAAnbunit3").value == 0) ById("DAAnbunit3").value = 1;
		for (var ui in uW.cm.UNIT_TYPES) {
			r = uW.cm.UNIT_TYPES[ui];
			if (typemarche == 3 && r != 3) {
				ById("DAAnbunit" + r).value = 0;
			}
			if (parseInt(ById("DAAnbunit" + r).value) > parseInt(ById("DAAdestunit" + r).value)) {
				ById("DAAnbunit" + r).style.backgroundColor = "red";
				return false;
			}
			totalunit = totalunit + parseInt(ById("DAAnbunit" + r).value);
			ById("DAAnbunit" + r).style.backgroundColor = "";
		}
		var errMsg = "";
		if (errMsg != "") {
			t.statutRAA.innerHTML = "<FONT COLOR=#550000>" + errMsg + "</font>";
			return;
		}
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.cid = t.sourceCity.id;
		for (var ui in uW.cm.UNIT_TYPES) {
			i = uW.cm.UNIT_TYPES[ui];
			params["u" + i] = 0;
		}
		if (typemarche != 3) {
			for (var ui in uW.cm.UNIT_TYPES) {
				i = uW.cm.UNIT_TYPES[ui];
				if (ById("DAAnbunit" + i).value > 0) params["u" + i] = ById("DAAnbunit" + i).value;
			}
		} else {
			params.u3 = ById("DAAnbunit3").value;
			ById("DAAnbunit3").value = 0;
		}
		t.actionRAA.disabled = true;
		t.statutRAA.innerHTML = "<i><b>Setting defense ....</b></i>";
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/cityDefenseSet.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			loading: true,
			onSuccess: function (transport) {
				var t = Tabs.Defend;
				var rslt = transport;
				if (rslt.ok) {
					var unitsarr = [];
					for (j in unsafeWindow.unitcost)
						unitsarr.push(0);
					for (i = 0; i <= unitsarr.length; i++)
						if (params["u" + i])
							unitsarr[i] = params["u" + i];
					if (rslt.updateSeed) {
						unsafeWindow.update_seed(rslt.updateSeed)
					};
					if (rslt.def != null) {
						var unitlist = unsafeWindow.seed.defunits["city" + t.sourceCity.id];
						uW.jQuery.each(rslt.def, function (key, val) {
							var key1 = key.replace("u", "unt");
							unitlist[key1] = val
						})
					}
					if (rslt.res != null) {
						var unitlist = unsafeWindow.seed.units["city" + t.sourceCity.id];
						uW.jQuery.each(rslt.res, function (key, val) {
							var key1 = key.replace("u", "unt");
							unitlist[key1] = val
						})
					}
					var typeattaque = "Defense set successful";
					t.statutRAA.innerHTML = "<center><font size='3px'><b>" + typeattaque + "</b></font></center>";
					t.clickRAACitySourceSelect(t.sourceCity);
				} else {
					t.statutRAA.innerHTML = "<font color=red size='3px'><b>Error setting defense!<b></font>";
					if (rslt.msg) {
						t.statutRAA.innerHTML += "<br><font color=black size='2px'>" + rslt.msg + "</font>";
					} else {
						t.statutRAA.innerHTML += "<br>Waiting for 2 seconds!</font>";
						//setTimeout(function() { t.clickATTAQUEDo(); }, 2000);
					}
				}
				t.actionRAA.disabled = false;
			},
			onFailure: function () {
				var t = Tabs.Defend;
				t.statutRAA.innerHTML = "<font color=red size='3px'><b>Error communicating with server!<b></font>";
				t.actionRAA.disabled = false;
			}
		});
	},
	SelectFavoris: function () {
		var t = Tabs.Defend;
		if (t.listeFavoris.value != '') {
			var valeur = t.listeFavoris.value;
			var x = valeur.substr(0, valeur.lastIndexOf(','));
			var y = valeur.substr(valeur.lastIndexOf(',') + 1, valeur.length);
			t.destinationCityx.value = x;
			t.destinationCityy.value = y;
		}
	},
	chercherFavoris: function () {
		var t = Tabs.Defend;
		var myA = getMyAlliance();
		if (myA[0] != 0) {
			var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
			params.perPage = 100;
			params.allianceId = myA[0];
			new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/getUserLeaderboard.php" + unsafeWindow.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					// on vide la liste
					//t.listeFavoris.innerHTML=null;
					if (rslt.ok) {
						var z = 0;
						var m = "";
						for (var i = 0; i < rslt.results.length; i++) {
							p = rslt.results[i];
							if (p.userId != 0) {
								for (var c = 0; c < p.cities.length; c++) {
									if (Seed.player.name != p.displayName) {
										m += "<option value='" + p.cities[c].xCoord + "," + p.cities[c].yCoord + "'>" + p.displayName + " - City " + (c + 1) + " - " + p.cities[c].xCoord + "," + p.cities[c].yCoord + "</option>";
									}
								} //fin for cities  	       
							} //fin if user 
						} //fin for resultat
						t.listeFavoris.innerHTML = "<option value=''>Selection...</option>" + m;
					} // fin
				},
				onFailure: function (rslt) {
					t.listeFavoris.innerHTML = "<option>Error getting info</option>";
				},
			});
		} else {
			// Si pas d'alliance !
			t.listeFavoris.innerHTML = "<option>Pas d'alliance !</option>";
		}
	},
	SaveCoordsOptions: function (x, y) {
		Options.Xrenfort = x;
		Options.Yrenfort = y;
		saveOptions();
	},
	Refreshtroops: function () {
		if (!ById("DAAstatsource")) return;
		var t = Tabs.Defend;
		var cityID = 'city' + t.sourceCity.id;
		for (var ui in uW.cm.UNIT_TYPES) {
			r = uW.cm.UNIT_TYPES[ui];
			ById('DAAdestunit' + r).value = parseInt(Seed.units[cityID]['unt' + r]) + parseInt(Seed.defunits[cityID]['unt' + r]);
		}
		setTimeout(t.Refreshtroops, 1000);
	},
	clickRAACitySourceSelect: function (city) {
		var t = Tabs.Defend;
		if (t.sourceCity != city) {
			t.sourceCity = city;
		}
		var m = "";
		m = "<table cellspacing=0 cellpadding=0 width=80%><tr><td colspan=2>Total Units Available</td><td colspan=2>Current Defending Units</td><td colspan=2><a href='javascript:void(0)' id=BO_DRSRV_Units title='Clear' >Units to Reserve</td><td></td><td><a href='javascript:void(0)' id=BO_DAZ_Units title='Clear' >Units Selected</a></td></tr>";
		var cityID = 'city' + t.sourceCity.id;
		for (var ui in uW.cm.UNIT_TYPES) {
			r = uW.cm.UNIT_TYPES[ui];
			m += '<tr><td align=right><img title="' + unsafeWindow.unitcost['unt' + r][0] + '" height=20 src=http://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/units/unit_' + r + '_30.jpg></td>\
             <td align=left><input style="border:1px solid black;height:16px;font-size:11px;" id="DAAdestunit' + r + '" type=text size=10 readonly value="' + (parseInt(Seed.units[cityID]['unt' + r]) + parseInt(Seed.defunits[cityID]['unt' + r])) + '">&nbsp;</td>\
             <td></td><td ><input style="border:1px solid black;height:16px;font-size:11px;" id="DAAdefunit' + r + '" type=text size=10 readonly value="' + parseInt(Seed.defunits[cityID]['unt' + r]) + '">&nbsp;\
             <td></td><td ><input style="border:1px solid black;height:16px;font-size:11px;" id="DAArsrvunit' + r + '" type=text size=10 value="' + Options.DefendRsrv[r] + '">&nbsp;\
             <input type=button value="--->" id="DAApdestunit' + r + '"  style="border:1px solid black;height:16px;font-size:11px;"></td>';
			m += '<td align=right><img height=20 title="' + unsafeWindow.unitcost['unt' + r][0] + '" src=http://kabam1-a.akamaihd.net/kingdomsofcamelot/fb/e2/src/img/units/unit_' + r + '_30.jpg></td>\
	     <td ><input style="border:1px solid black;height:16px;font-size:11px;" id="DAAnbunit' + r + '" type=text size=10 value="' + parseInt(Seed.defunits[cityID]['unt' + r]) + '" ></td></tr>';
		}
		m += "</table>";
		ById("DAAstatsource").innerHTML = m;
		for (var ui in uW.cm.UNIT_TYPES) {
			r = uW.cm.UNIT_TYPES[ui];
			ById("DAApdestunit" + r).addEventListener('click', function () {
				var nomcha = this.id.replace("DAApdest", "DAAdest");
				var nomcha2 = this.id.replace("DAApdestunit", "DAAnbunit");
				var nomcha3 = this.id.replace("DAApdestun", "DAArsrvun");
				ById(nomcha2).value = 0;
				ById(nomcha2).value = ById(nomcha).value - ById(nomcha3).value;
				if (ById(nomcha2).value < 0) ById(nomcha2).value = 0;
			}, false);
			ById("DAArsrvunit" + r).addEventListener('change', function () {
				if (isNaN(this.value)) this.value = 0;
				var unt = this.id.replace("DAArsrvunit", "");
				Options.DefendRsrv[unt] = this.value;
			}, false);
		}
		ById("BO_DAZ_Units").addEventListener('click', function () {
			for (var ui in uW.cm.UNIT_TYPES) ById("DAAnbunit" + uW.cm.UNIT_TYPES[ui]).value = 0;
		}, false);
		ById("BO_DRSRV_Units").addEventListener('click', function () {
			for (var ui in uW.cm.UNIT_TYPES) ById("DAArsrvunit" + uW.cm.UNIT_TYPES[ui]).value = 0;
		}, false);
	},
}
/*************************************** MARCHES TAB ************************************************/
Tabs.Marches = {
	tabOrder: 5,
	tabLabel: uW.g_js_strings.commonstr.marching,
	cont: null,
	displayTimer: null,
	displayPopupTimer: null,
	curTabBut: null,
	curTabName: null,
	widescreen: true,
	init: function (div) {
		var t = Tabs.Marches;
		uW.pr56Recall = t.butRecall;
		uW.r8x6Home = t.butSendHome;
		uW.cancelMarch = t.butcancelmarch;
		t.MarchDivP = null;
		t.cont = div;
		var main = '<TABLE class=ptTab align=center><TR><TD><INPUT class=pbSubtab ID=ptmrchSubN type=submit value="' + uW.g_js_strings.attack_viewimpending_view.incomingtroops + '"></td>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubP type=submit value="Incoming Popup"></td>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubM type=submit value=' + uW.g_js_strings.commonstr.marching + '></td>';
		main += '<TD><INPUT class=pbSubtab ID=ptmrchSubR type=submit value=' + uW.g_js_strings.commonstr.reinforced + '></td></tr></table><HR class=ptThin>';
		main += '<TD width = "100px" ; border:none"><a href="https://code.google.com/p/koc-power-tools/wiki/HowToMarches" target="_blank">HELP</a></td></tr>';
		main += '<DIV id=ptMarchOutput style="margin-top:10px; background-color:white; height:680px; overflow:scroll;"></div>';
		t.cont.innerHTML = main;
		t.marchDiv = document.getElementById('ptMarchOutput');
		t.marchDivP = document.getElementById('ptMarchOutput');
		document.getElementById('ptmrchSubN').addEventListener('click', e_butSubtab, false);
		document.getElementById('ptmrchSubP').addEventListener('click', e_butSubtab, false);
		document.getElementById('ptmrchSubR').addEventListener('click', e_butSubtab, false);
		document.getElementById('ptmrchSubM').addEventListener('click', e_butSubtab, false);
		changeSubtab(document.getElementById('ptmrchSub' + Options.curMarchTab));

		function e_butSubtab(evt) {
			changeSubtab(evt.target);
		}

		function changeSubtab(but) {
			if (but == t.curTabBut)
				return;
			if (t.curTabBut) {
				t.curTabBut.className = 'pbSubtab';
				t.curTabBut.disabled = false;
			}
			t.curTabBut = but;
			but.className = 'pbSubtab pbSubtabSel';
			but.disabled = true;
			t.curTabName = but.id.substr(9);
			Options.curMarchTab = t.curTabName;
			saveOptions();
			t.show();
		}
	},
	hide: function () {
		var t = Tabs.Marches;
		clearTimeout(t.displayTimer);
	},
	show: function () {
		var t = Tabs.Marches;
		clearTimeout(t.displayTimer);
		if (t.curTabName == 'R')
			t.showReinforcements();
		else if (t.curTabName == 'M')
			t.showMarches();
		else if (t.curTabName == 'P') {
			t.showIncoming('popup');
			Options.curMarchTab = 'N';
			saveOptions();
		} else
			t.showIncoming('');
	},
	/***   Incoming SUBTAB  ***/
	showIncoming: function (target) {
		var t = Tabs.Marches;
		if (target == 'popup') {
			t.marchDivP = new CPopup('ptShowIncoming', 0, 0, 650, 340, true, function () {
				clearTimeout(1000);
			});
			t.marchDivP.getMainDiv().innerHTML = m;
		} else
			t.marchDiv.innerHTML = null;
		var z = '<TABLE id=pdincoming cellSpacing=10 width=100% height=0% class=pbTab>';
		for (k in Seed.queue_atkinc) {
			if (Seed.queue_atkinc.length != 0) {
				var now = unixTime();
				var icon, status, FROM, cityname, FROMmight, marchdir, marchtime;
				var marchType = parseInt(Seed.queue_atkinc[k]["marchType"]);
				if (marchType == 10) marchType = 4; //MARCH_TYPE_DARK_FOREST: 10
				var marchStatus = parseInt(Seed.queue_atkinc[k]["marchStatus"]);
				for (var i = 0; i < Seed.cities.length; i++) {
					if (Seed.cities[i][0] == Seed.queue_atkinc[k]["toCityId"]) cityname = Seed.cities[i][1];
				}
				if (Seed.queue_atkinc[k]["destinationUnixTime"] < now || marchStatus == 8)
					marchdir = "returning";
				else
					marchdir = "going";
				var destinationUnixTime = Seed.queue_atkinc[k]["arrivalTime"] - now;
				if (destinationUnixTime > 0)
					marchtime = timestr(destinationUnixTime, true)
				else
					marchtime = 'Arrived';
				if (marchType != 3 && marchType != 4) {
					var player = Seed.players['u' + Seed.queue_atkinc[k]["fromPlayerId"]]
					FROM = player.n;
					FROMmight = player.m;
				} else {
					for (players in Seed.players) {
						if (marchType == 3 || marchType == 4) {
							if (('u' + Seed.queue_atkinc[k]["pid"]) == players) {
								FROM = Seed.players[players]["n"];
								FROMmight = Seed.players[players]["m"];
							}
						}
					}
				}
				if (marchType == 2 && marchStatus == 2) marchType = 102;
				switch (marchType) {
				case 1:
					icon = "https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/transporting.jpg";
					status = uW.g_js_strings.commonstr.transport;
					break;
				case 2:
					icon = "https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/reinforce.jpg";
					status = uW.g_js_strings.commonstr.reinforce;
					break;
				case 3:
					icon = "https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/scouting.jpg";
					status = uW.g_js_strings.commonstr.scout;
					break;
				case 4:
					icon = "https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/attacking.jpg";
					status = uW.g_js_strings.commonstr.attack;
					break;
				case 9:
					icon = "https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/attacking.jpg";
					status = uW.g_js_strings.commonstr.attack;
					break;
				case 5:
					icon = "https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/transporting.jpg";
					status = uW.g_js_strings.commonstr.reassign;
					break;
				case 100:
					icon = "https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/returning.jpg";
					status = uW.g_js_strings.commonstr.returning;
					break;
				case 102:
					icon = "https://kabam1-a.akamaihd.net/silooneofcamelot/fb/e2/src/img/reinforce.jpg";
					status = uW.g_js_strings.commonstr.encamped;
					break;
				}
				if (status == uW.g_js_strings.commonstr.encamped)
					z += '<TD width="10px"><A onclick="r8x6Home(' + Seed.queue_atkinc[k].marchId + ')"><img src=' + icon + '></a></td>';
				else
					z += '<TD width="10px"><img src=' + icon + '></td>';
				z += '<TD width="40px">' + status + '</td>';
				z += '<TD>' + cityname + '</td>';
				z += '<TD>' + marchtime + '</td>';
				z += '<TD>' + uW.g_js_strings.commonstr.from + ': ' + FROM + '</td>';
				z += '<TD>' + uW.g_js_strings.commonstr.might + ': ' + addCommas(FROMmight) + '</td>';
				if (Seed.queue_atkinc[k]["knt"] != undefined) z += '<TD>' + uW.g_js_strings.commonstr.knight + ': ' + Seed.queue_atkinc[k]["knt"]["cbt"] + '</td>';
				if (Seed.queue_atkinc[k]["gold"] > 0) z += '<TD>' + GameIcons.goldImgTiny + addCommas(Seed.queue_atkinc[k]["gold"]) + '</td>';
				if (Seed.queue_atkinc[k]["resource1"] > 0) z += '<TD>' + GameIcons.foodImgTiny + addCommas(Seed.queue_atkinc[k]["resource1"]) + '</td>';
				if (Seed.queue_atkinc[k]["resource2"] > 0) z += '<TD>' + GameIcons.woodImgTiny + addCommas(Seed.queue_atkinc[k]["resource2"]) + '</td>';
				if (Seed.queue_atkinc[k]["resource3"] > 0) z += '<TD>' + GameIcons.stoneImgTiny + addCommas(Seed.queue_atkinc[k]["resource3"]) + '</td>';
				if (Seed.queue_atkinc[k]["resource4"] > 0) z += '<TD>' + GameIcons.oreImgTiny + addCommas(Seed.queue_atkinc[k]["resource4"]) + '</td>';
				for (var ui in uW.cm.UNIT_TYPES) {
					i = uW.cm.UNIT_TYPES[ui];
					if (Seed.queue_atkinc[k]["unit" + i + "Count"] > 0 && marchdir == "going") z += '<TD>' + uW.unitcost['unt' + i][0] + ': ' + addCommas(Seed.queue_atkinc[k]["unit" + i + "Count"]) + '</td>';
					if (Seed.queue_atkinc[k]["unit" + i + "Return"] > 0 && marchdir == "returning") z += '<TD>' + uW.unitcost['unt' + i][0] + ': ' + addCommas(Seed.queue_atkinc[k]["unit" + i + "Return"]) + '</td>';
				}
				if (marchType == 3)
					if (Object.keys(Seed.queue_atkinc[k]["unts"]).length > 0)
						if (Seed.queue_atkinc[k]["unts"]["u3"] > 0) z += '<TD>' + uW.unitcost.unt3[0] + ': ' + addCommas(Seed.queue_atkinc[k]["unts"]["u3"]) + '</td>';
				if (marchType == 4) {
					if (Object.keys(Seed.queue_atkinc[k]["unts"]).length > 0)
						for (var i in uW.cm.UNIT_TYPES) {
							ui = uW.cm.UNIT_TYPES[i];
							if (Seed.queue_atkinc[k]["unts"]["u" + ui] > 0) z += '<TD>' + uW.unitcost['unt' + ui][0] + ': ' + addCommas(Seed.queue_atkinc[k]["unts"]["u" + ui]) + '</td>';
						}
				}
				z += '</tr>';
			}
		}
		z += '</table>';
		if (target == 'popup') {
			t.marchDivP.getMainDiv().innerHTML = z;
			t.marchDivP.getTopDiv().innerHTML = '<DIV align=center><B>INCOMING!</B></DIV>';
			t.marchDivP.show(true);
			t.displayPopupTimer = setTimeout(function () {
				t.showIncoming('popup');
			}, 1000);
			t.marchDivP.onClose = function () {
				clearTimeout(t.displayPopupTimer);
			}
		} else {
			t.marchDiv.innerHTML = z;
			t.displayTimer = setTimeout(function () {
				t.showIncoming('');
			}, 500);
		}
	},
	/***   MARCHES SUBTAB  ***/
	showMarches: function () {
		var t = Tabs.Marches;
		t.marchDiv.innerHTML = null;
		var updatemarch = Seed.queue_atkp;
		var m = '';
		for (var c = 0; c < Seed.cities.length; c++) {
			cityname = Seed.cities[c][1];
			cityID = 'city' + Seed.cities[c][0];
			var raidNumber = 0;
			var marchNumber = 0;
			var tmpMsg = '';
			var raidMarchMsg = '';
			var marchMsg = '<div class="ptdivHeader" align=left>Attack/Scout/Reinforce/Transport</div>';
			m += '<div class="ptdivHeader" align="left" style="background: #99CCFF;">' + cityname + '</div>';
			//raidMarchMsg += '<div class="ptdivHeader" align=left><a id=ptRaidHdr'+cityID+' class=ptdivLink >Raids&nbsp;<img id=ptRaid'+cityID+'Arrow height="10" src="'+GameIcons.RightArrow+'"></a></div>';  
			raidMarchMsg += '<div id=ptRaid' + cityID + ' align=left class="ptdivHide">';
			for (k in Seed.queue_atkp[cityID]) {
				if (Seed.queue_atkp[cityID].length != 0) {
					var marchID = new String(k);
					marchID = marchID.substr(1);
					//marchType 1 = transport
					//marchType 2 = reinforce
					//marchType 3 = scouting
					//marchType 4 = attacking
					//marchType 9 = barb raid
					var marchType = parseInt(Seed.queue_atkp[cityID][k]["marchType"]);
					if (marchType == 10) marchType = 4; //MARCH_TYPE_DARK_FOREST: 10
					//marchStatus 1 = marching
					//marchStatus 2 = encamped
					//marchStatus 5 = waiting for report
					//marchStatus 8 = returning
					//matchStatus 10 = raid stopped
					var marchStatus = parseInt(Seed.queue_atkp[cityID][k]["marchStatus"]);
					var now = unixTime();
					cityTo = null;
					var icon, status, type, cityTo, knight, marchtime;
					for (var i = 0; i < Seed.cities.length; i++) {
						if (Seed.cities[i][2] == Seed.queue_atkp[cityID][k]["toXCoord"] && Seed.cities[i][3] == Seed.queue_atkp[cityID][k]["toYCoord"]) cityTo = Seed.cities[i][1];
					}
					var destinationUnixTime = Seed.queue_atkp[cityID][k]["destinationUnixTime"] - now;
					var returnUnixTime = Seed.queue_atkp[cityID][k]["returnUnixTime"] - now;
					var encampedUnixTime = now - Seed.queue_atkp[cityID][k]["destinationUnixTime"];
					var restingUnixTime = now - Seed.queue_atkp[cityID][k]["returnUnixTime"];
					if (Seed.queue_atkp[cityID][k]["destinationUnixTime"] > now)
						marchtime = timestr(destinationUnixTime, true);
					else
						marchtime = timestr(returnUnixTime, true);
					if (Seed.queue_atkp[cityID][k]["destinationUnixTime"] < now && marchType == 2)
						marchtime = timestr(encampedUnixTime, true);
					if (Seed.queue_atkp[cityID][k]["returnUnixTime"] < now && marchType == 9)
						marchtime = timestr(restingUnixTime, true);
					if (Seed.queue_atkp[cityID][k]["destinationUnixTime"] < now || marchStatus == 8)
						type = "returning";
					else
						type = "going";
					if (Seed.queue_atkp[cityID][k]["destinationUnixTime"] < now) {
						if (marchStatus == 8)
							marchtime = timestr(returnUnixTime, true);
						if (type == "returning" && marchType == 2 && marchStatus != 2)
							marchtime = timestr(returnUnixTime, true);
						if (type == "returning" && marchType == 4 && marchStatus == 2)
							marchtime = timestr(returnUnixTime, true);
						if (marchStatus == 2 && marchType != 2)
							marchtime = timestr(returnUnixTime, true);
					}
					if (marchType == 4 && marchStatus == 2)
						marchtime = timestr(destinationUnixTime, true);;
					var iconType = marchType;
					if (type == "returning" && marchType != 2)
						iconType = 8;
					if (type == "returning" && marchType == 2 && marchStatus == 2)
						iconType = 102;
					if (type == "returning" && marchType == 2 && marchStatus != 2)
						iconType = 8;
					if (marchStatus == 10)
						iconType = 103;
					if (marchStatus == 4)
						iconType = 104;
					if (marchType == 4 && marchStatus == 2) {
						iconType = 102;
						marchtime = timestr(encampedUnixTime, true)
					}
					switch (iconType) {
					case 1:
						icon = GameIcons.transport;
						status = uW.g_js_strings.commonstr.transport;
						break;
					case 2:
						icon = GameIcons.reinforce;
						status = uW.g_js_strings.commonstr.reinforce;
						break;
					case 3:
						icon = GameIcons.scouting;
						status = uW.g_js_strings.commonstr.scout;
						break;
					case 4:
						icon = GameIcons.attacking;
						status = uW.g_js_strings.commonstr.attack;
						break;
					case 5:
						icon = GameIcons.transport;
						status = uW.g_js_strings.commonstr.reassign;
						break;
					case 8:
						icon = GameIcons.returning;
						status = uW.g_js_strings.commonstr.returning;
						break;
					case 9:
						icon = GameIcons.attacking;
						status = uW.g_js_strings.commonstr.raid;
						break;
					case 102:
						icon = GameIcons.reinforce;
						status = uW.g_js_strings.commonstr.encamped;
						break;
					case 103:
						icon = GameIcons.raidStopped;
						status = uW.g_js_strings.attack_generatequeue.raidstopped;
						break;
					case 104:
						icon = GameIcons.raidResting;
						status = uW.g_js_strings.attack_generatequeue.raidresting;
						break;
					}
					if (Seed.queue_atkp[cityID][k]["knightId"] != 0) {
						for (i in Seed.knights[cityID]) {
							if (i == ("knt" + Seed.queue_atkp[cityID][k]["knightId"])) knight = Seed.knights[cityID][i]["combat"];
						}
					} else knight = null;
					tmpMsg = '';
					if (marchType == 9) {
						raidNumber++;
						raidMarchMsg += '<table style="border-collapse:collapse;padding:3px;"><tr><td width=15>' + raidNumber + '<td>' + icon + '</td><td>' + status + '</td><td>' + marchtime + '</td>';
					} else {
						marchNumber++;
						marchMsg += '<table style="border-collapse:collapse;padding:3px;"><tr><td width=15>' + marchNumber + '<td>';
						if (status == "Encamped" && !t.isMyself(Seed.queue_atkp[cityID][k].fromPlayerId))
							marchMsg += '<td><A onclick="r8x6Home(' + marchID + ')">' + icon + '</a></td>';
						else if (status == 'Encamped' && t.isMyself(Seed.queue_atkp[cityID][k].fromPlayerId))
							marchMsg += '<td><A onclick="pr56Recall(' + marchID + ')">' + icon + '</a></td>';
						else if (status == 'Returning' || status == "Raid Stopped")
							marchMsg += '<td>' + icon + '</td>';
						else
							marchMsg += '<TD><A onclick="cancelMarch(' + marchID + ')">' + icon + '</a></td>';
						marchMsg += '<td>' + status + '</td><td>' + marchtime + '</td>';
					}
					if (cityTo == null)
						tmpMsg += '<td>' + coordLink(Seed.queue_atkp[cityID][k]["toXCoord"], Seed.queue_atkp[cityID][k]["toYCoord"]) + '</td>';
					else
						tmpMsg += '<td>' + cityTo + '</td>';
					if (knight != null)
						tmpMsg += '<td>' + uW.g_js_strings.commonstr.knight + ': ' + knight + '</td>';
					for (var ui in uW.cm.UNIT_TYPES) {
						i = uW.cm.UNIT_TYPES[ui];
						if (Seed.queue_atkp[cityID][k]["unit" + i + "Count"] > 0 && type == "going")
							tmpMsg += '<td>' + uW.unitcost['unt' + i][0] + ': ' + addCommas(Seed.queue_atkp[cityID][k]["unit" + i + "Count"]) + '</td>';
						if (Seed.queue_atkp[cityID][k]["unit" + i + "Return"] > 0 && type == "returning")
							tmpMsg += '<td>' + uW.unitcost['unt' + i][0] + ': ' + addCommas(Seed.queue_atkp[cityID][k]["unit" + i + "Return"]) + '</td>';
					}
					if (Seed.queue_atkp[cityID][k]["toTileType"] == 11) tmpMsg += '<TD>Lake Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
					else if (Seed.queue_atkp[cityID][k]["toTileType"] == 20) tmpMsg += '<TD>Grassland Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
					else if (Seed.queue_atkp[cityID][k]["toTileType"] == 30) tmpMsg += '<TD>Hills Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
					else if (Seed.queue_atkp[cityID][k]["toTileType"] == 40) tmpMsg += '<TD>Mountain Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
					else if (Seed.queue_atkp[cityID][k]["toTileType"] == 50) tmpMsg += '<TD>Plain Lvl: ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
					else if (Seed.queue_atkp[cityID][k]["toCityId"] == 0) tmpMsg += '<TD>' + uW.g_js_strings.commonstr.barbariancamp + ' ' + uW.g_js_strings.commonstr.lvl + ': ' + Seed.queue_atkp[cityID][k]["toTileLevel"] + '</td>';
					tmpMsg += '<td>'
					if (Seed.queue_atkp[cityID][k]["gold"] > 0) tmpMsg += GameIcons.goldImgTiny + addCommas(Seed.queue_atkp[cityID][k]["gold"]);
					if (Seed.queue_atkp[cityID][k]["resource1"] > 0) tmpMsg += GameIcons.foodImgTiny + addCommas(Seed.queue_atkp[cityID][k]["resource1"]);
					if (Seed.queue_atkp[cityID][k]["resource2"] > 0) tmpMsg += GameIcons.woodImgTiny + addCommas(Seed.queue_atkp[cityID][k]["resource2"]);
					if (Seed.queue_atkp[cityID][k]["resource3"] > 0) tmpMsg += GameIcons.stoneImgTiny + addCommas(Seed.queue_atkp[cityID][k]["resource3"]);
					if (Seed.queue_atkp[cityID][k]["resource4"] > 0) tmpMsg += GameIcons.oreImgTiny + addCommas(Seed.queue_atkp[cityID][k]["resource4"]);
					tmpMsg += '</td></tr></table>';
					if (marchType == 9) {
						raidMarchMsg += tmpMsg;
					} else {
						marchMsg += tmpMsg;
					}
				}
			}
			m += '<div class="ptdivHeader" align=left><a id=ptRaidHdr' + cityID + ' class=ptdivLink >Raids (';
			m += raidNumber + ')&nbsp;<img id=ptRaid' + cityID + 'Arrow height="10" src="' + GameIcons.RightArrow + '"></a></div>'
			m += raidMarchMsg + '</div>';
			m += marchMsg;
		}
		t.marchDiv.innerHTML = m;
		for (var c = 0; c < Seed.cities.length; c++) {
			cityID = 'city' + Seed.cities[c][0];
			(function (cityID, c) {
				document.getElementById('ptRaidHdr' + cityID).addEventListener('click', function () {
					ToggleDivDisplay(500, 500, "ptRaid" + cityID);
					Options.marchRaidState[c] = !(Options.marchRaidState[c]);
					saveOptions();
				}, false);
				if (Options.marchRaidState[c]) {
					ToggleDivDisplay(500, 500, "ptRaid" + cityID);
				}
			})(cityID, c);
		}
		t.displayTimer = setTimeout(t.showMarches, 500);
	},
	isMyself: function (userID) {
		if (!Seed.players["u" + userID])
			return false;
		if (Seed.players["u" + userID].n == Seed.player.name)
			return true;
		else
			return false;
		return false;
	},
	butcancelmarch: function (marchID) {
		var t = Tabs.Marches;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.mid = marchID;
		for (var c = 0; c < Cities.numCities; c++) {
			var que = Seed.queue_atkp['city' + Cities.cities[c].id];
			if (matTypeof(que) == 'array')
				continue;
			for (k in que) {
				if (k == 'm' + marchID) {
					params.cid = Cities.cities[c].id;
					break;
				}
			}
		}
		new AjaxRequest(uW.g_ajaxpath + "ajax/cancelMarch.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				var march = uW.seed.queue_atkp["city" + params.cid]["m" + params.mid];
				march.marchStatus = 8;
				var marchtime = parseInt(march.returnUnixTime) - parseInt(march.destinationUnixTime);
				var ut = unixTime();
				if (uW.seed.playerEffects.returnExpire > unixTime())
					marchtime *= 0.5
				march.returnUnixTime = ut + marchtime;
				march.destinationUnixTime = ut;
				march.marchUnixTime = ut - marchtime;
				if (rslt.updateSeed) {
					update_seed(rslt.updateSeed)
				}
				if (notify != null)
					notify(rslt.errorMsg);
			},
			onFailure: function () {
				if (notify != null)
					notify(rslt.errorMsg);
			},
		});
	},
	/***  REINFORCEMENTS SUBTAB  ***/
	showReinforcements: function () {
		var rownum = 0;
		var names = ['Supply', 'Mil', 'Scout', 'Pike', 'Sword', 'Archer', 'Cav', 'Heavy', 'Wagon', 'Balli', 'Ram', 'Cat', 'BloodT', 'Exec', 'SWall', 'FlArcher'];
		var t = Tabs.Marches;
		clearTimeout(t.displayTimer);
		// TODO FIX: Troops show as encamped even if they are here yet (check destinationUnixTime)
		//    - Added 5/9/2013
		/***    
var s = 'OUTGOING:<BR>'; 
for (var c=0; c<Cities.numCities; c++){
  var que = Seed.queue_atkp['city'+ Cities.cities[c].id];
  if (matTypeof(que)=='array')
    continue;

s += 'City: '+  Cities.cities[c].name + ': <BR>'; 

  for (k in que){
    march = que[k];
    var mid = k.substr(1);
    s += mid +' DEST: '+ march.toXCoord +','+ march.toYCoord + '  <INPUT type=submit value="Recall" onclick="pr56Recall('+ mid +')"><BR>'
  }      
} 
t.cont.innerHTML = s;
t.displayTimer = setTimeout (t.show, 10000);
return;
***/
		function clickShowRemaining() {
			checkBox = document.getElementById('idCheck2');
			if (checkBox.checked)
				Options.encRemaining = false;
			else
				Options.encRemaining = true;
			t.show();
		}
		enc = {};
		numSlots = 0;
		if (matTypeof(Seed.queue_atkinc) != 'array') {
			for (k in Seed.queue_atkinc) {
				march = Seed.queue_atkinc[k];
				var now = unixTime();
				if (march["destinationUnixTime"] < now)
					if (march.marchType == 2) {
						++numSlots;
						city = march.toCityId;
						from = march.fromPlayerId;
						if (!enc[city])
							enc[city] = {};
						if (!enc[city][from])
							enc[city][from] = [];
						s = {};
						s.knight = parseInt(march.knightCombat);
						s.marchId = k.substr(1);
						s.troops = [];
						for (var ui in uW.cm.UNIT_TYPES) {
							i = uW.cm.UNIT_TYPES[ui];
							if (Options.encRemaining)
								s.troops[i] = parseInt(march['unit' + i + 'Return']);
							else
								s.troops[i] = parseInt(march['unit' + i + 'Count']);
						}
						enc[city][from].push(s);
					}
			}
		}
		//logit ("enc: "+ inspect (enc, 6, 1));    
		s = '<div class=ptstat>Showing troops encamped at each of your embassies.</div><BR>';
		if (numSlots == 0) {
			s += '<BR><CENTER><B>No troops encamped.</b></center>';
		} else {
			s += '<STYLE> .tot{background:#f0e0f8;} .city{background:#ffffaa;}</style>';
			s += '<TABLE cellspacing=0 width=100%><TR align=right><TD align=left width=16%><B>Player (knight)</b></td>';
			for (k = 0; k < names.length; k++)
				s += '<TD width=7%><B>' + names[k] + '</b></td>';
			s += '</tr>';
			tot = [];
			for (var ui in uW.cm.UNIT_TYPES) {
				i = uW.cm.UNIT_TYPES[ui];
				tot[i] = 0;
			}
			for (c in Cities.cities) {
				dest = Cities.cities[c].id;
				if (enc[dest]) {
					s += '<TR><TD class=xtab><BR></td></tr>';
					s += '<TR><TD class="city" colspan=13 align=center><B>' + Cities.cities[c].name + '</b></td></tr>';
					for (p in enc[dest]) {
						try {
							player = Seed.players['u' + p].n;
						} catch (err) {
							player = '???';
						}
						for (m = 0; m < enc[dest][p].length; m++) {
							var march = enc[dest][p][m];
							knight = '';
							if (march.knight > 0)
								knight = ' (' + march.knight + ')';
							// TODO: Only allow 'send home' if troops are here now  (marchStatus = ?)              
							s += '<TR align=right><TD align=left>' + player + knight + ' <A><SPAN onclick="r8x6Home(' + march.marchId + ')">X</span></a></td>'
							for (var ui in uW.cm.UNIT_TYPES) {
								i = uW.cm.UNIT_TYPES[ui];
								s += '<TD>' + march.troops[i] + '</td>';
								tot[i] += march.troops[i];
							}
							s += '</tr>';
						}
					}
				}
			}
			s += '<TR><TD colspan=17><BR><BR></td></tr><TR align=right><TD class="tot" align=left><B>TOTALS:</b></td>';
			for (var ui in uW.cm.UNIT_TYPES) {
				i = uW.cm.UNIT_TYPES[ui];
				s += '<TD class="tot">' + tot[i] + '</td>';
			}
			s += '</tr></table>';
		}
		s += '<BR><BR><INPUT type=CHECKBOX id=idCheck2 ' + (Options.encRemaining ? '' : ' CHECKED ') + '> Show Original Troops';
		s += '<BR><BR><DIV style="font-size: 10px">NOTE: You will need to refresh KofC to show new encampments or remaining troops after a battle.</div>';
		t.marchDiv.innerHTML = s;
		checkBox = document.getElementById('idCheck2');
		checkBox.addEventListener('click', clickShowRemaining, false);
		t.displayTimer = setTimeout(t.show, 10000);
	},
	butRecall: function (marchId) {
		var t = Tabs.Marches;
		logit("CANCELLING: " + marchId);
		t.ajaxRecall(marchId);
	},
	butSendHome: function (marchId) {
		var t = Tabs.Marches;
		//alert("Sent Home march#"+marchId);
		logit("SEND HOME: " + marchId);
		t.ajaxSendHome(marchId, function (r) {
			t.show();
			logit("AJAX RESULT: " + r)
		});
	},
	/***  
  // not working, returns 'invalid parameters' :(  
  ajaxCancelMarch : function (marchId, notify){
    var params = uW.Object.clone(uW.g_ajaxparams);
logit ('ajaxCancelMarch: '+ marchId);    
    for (var c=0; c<Cities.numCities; c++){
      var que = Seed.queue_atkp['city'+ Cities.cities[c].id];
      if (matTypeof(que)=='array')
        continue;
      for (k in que){
        if (k == 'm'+marchId){
          params.cid = Cities.cities[c].id;
          params.cityId = Cities.cities[c].id;
          break;
        }
      }    
    }    
    params.marchId = marchId;
    params.mid = 'm'+ marchId;
    params.requestType = "CANCEL_MARCH";
    new MyAjaxRequest(uW.g_ajaxpath + "ajax/cancelMarch.php" + uW.g_ajaxsuffix, {
        method: "post",
        parameters: params,
        onSuccess: function (rslt) {
          if (notify != null)
            notify(rslt.errorMsg);
        },
        onFailure: function () {
          if (notify != null)
            notify(rslt.errorMsg);
        },
    });
  },
***/
	ajaxSendHome: function (marchId, notify) {
		logit('ajaxSendHome: ' + marchId);
		var march = Seed.queue_atkinc['m' + marchId];
		if (march == null) {
			notify('March not found!');
			return;
		}
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.mid = marchId;
		params.cid = march.toCityId;
		params.fromUid = march.fromPlayerId;
		params.fromCid = march.fromCityId;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/kickoutReinforcements.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok) {
					var upkeep = 0;
					for (var ui in uW.cm.UNIT_TYPES) {
						i = uW.cm.UNIT_TYPES[ui];
						upkeep += parseInt(march["unit" + i + "Return"]) * parseInt(uW.unitupkeeps[i])
					}
					uW.seed.resources["city" + march.toCityId].rec1[3] -= upkeep;
					if (parseInt(march.fromPlayerId) == parseInt(uW.tvuid)) {
						//logit ('FROM ME!'); 
						var mymarch = uW.seed.queue_atkp["city" + march.fromCityId]["m" + marchId];
						var marchtime = Math.abs(parseInt(mymarch.destinationUnixTime) - parseInt(mymarch.eventUnixTime));
						mymarch.returnUnixTime = unixTime() + marchtime;
						mymarch.marchStatus = 8;
					}
					delete uW.seed.queue_atkinc["m" + marchId];
					if (notify != null)
						notify(null);
				} else {
					if (notify != null)
						notify(rslt.errorMsg);
				}
			},
			onFailure: function () {
				if (notify != null)
					notify(rslt.errorMsg);
			},
		});
	},
	/*****

      for (var ui in uW.cm.UNIT_TYPES) {
      	b = uW.cm.UNIT_TYPES[ui];
        g += parseInt(e["unit" + b + "Return"]) * parseInt(unitupkeeps[b])
      }

function kickout_allies(mid, cid, fromUid, fromCid, upkeep) {
  var params = Object.clone(g_ajaxparams);
  params.mid = mid;
  params.cid = cid;
  params.fromUid = fromUid;
  params.fromCid = fromCid;
  new Ajax.Request(g_ajaxpath + "ajax/kickoutReinforcements.php" + g_ajaxsuffix, {
    method: "post",
    parameters: params,
    onSuccess: function(transport) {
      var rslt = eval("(" + transport.responseText + ")");
      if (rslt.ok) {
        Modal.showAlert(g_js_strings.kickout_allies.troopshome);
        seed.resources["city" + currentcityid].rec1[3] = parseInt(seed.resources["city" + currentcityid].rec1[3]) - upkeep;
        Modal.hideModalAll();
        if (parseInt(fromUid) == parseInt(tvuid)) {
          var curmarch = seed.queue_atkp["city" + fromCid]["m" + mid];
          var marchtime = Math.abs(parseInt(curmarch.destinationUnixTime) - parseInt(curmarch.eventUnixTime));
          curmarch.returnUnixTime = unixtime() + marchtime;
          curmarch.marchStatus = 8
        }
        delete seed.queue_atkinc["m" + mid]
      } else {
        Modal.showAlert(printLocalError((rslt.error_code || null), (rslt.msg || null), (rslt.feedback || null)))
      }
    },
    onFailure: function() {}
  })
};
***/
	ajaxRecall: function (marchId, notify) {
		var params = uW.Object.clone(uW.g_ajaxparams);
		for (var c = 0; c < Cities.numCities; c++) {
			var que = Seed.queue_atkp['city' + Cities.cities[c].id];
			if (matTypeof(que) == 'array')
				continue;
			for (k in que) {
				if (k == 'm' + marchId) {
					params.cid = Cities.cities[c].id;
					break;
				}
			}
		}
		params.mid = marchId;
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/undefend.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				var march = uW.seed.queue_atkp["city" + params.cid]["m" + params.mid];
				march.marchStatus = 8;
				var marchtime = parseInt(march.returnUnixTime) - parseInt(march.destinationUnixTime);
				var ut = unixTime();
				if (uW.seed.playerEffects.returnExpire > unixTime())
					marchtime *= 0.5
				march.returnUnixTime = ut + marchtime;
				march.destinationUnixTime = ut;
				march.marchUnixTime = ut - marchtime;
				if (notify != null)
					notify(rslt.errorMsg);
			},
			onFailure: function () {
				if (notify != null)
					notify(rslt.errorMsg);
			},
		});
	},
};
/*******************************************/
var PageNavigator = {
	modalMessagesFunc: null,
	ctrlPaginationOld: null,
	loadPage_paginationOld: null,
	cpPager: null,
	init: function () {
		var t = PageNavigator;
		t.modalMessagesFunc = new CalterUwFunc('modal_messages', [
			[/pageNavigatorModel\s*=.*?;/i, 'var pager=new ptPagerHook(0,5);pageNavigatorModel=pager;'],
			[/pageNavigatorView\s*=.*?;/i, 'pageNavigatorView=pager;'],
			[/pageNavigatorController\s*=.*?;/i, 'pageNavigatorController=pager;']
		]);
		uW.ptPagerHook = t.Cpager;
		t.ctrlPaginationOld = uW.ctrlPagination;
		t.loadPage_paginationOld = uW.loadPage_pagination;
		t.cpPager = new t.Cpager(0, 0);
		t.cpPager.oldStyle = true;
		t.enable(Options.fixPageNav);
	},
	// called on 'back' ...
	loadPage_pagination: function (divId, currentPage, callbackFunction, totalPages) {
		var t = PageNavigator;
		var curPage = parseInt(currentPage);
		//logit ('loadPage_pagination: '+  divId +','+ t.cpPager.divId +','+ currentPage +','+ callbackFunction +','+ totalPages +','+ t.cpPager.getCurrentPage()); 
		if (divId == t.cpPager.divId) // if 'old' style ...  
			unsafeWindow[callbackFunction](t.cpPager.getCurrentPage());
		else
			unsafeWindow[callbackFunction](currentPage);
	},
	ctrlPagination: function (navDivId, numPages, notify, curPage) {
		var t = PageNavigator;
		//logit ('ctrlPagination (divid:'+ navDivId +')');    
		if (document.getElementById(navDivId).firstChild == null)
			document.getElementById(navDivId).appendChild(t.cpPager.getHtmlElement());
		t.cpPager.setPageCount(numPages);
		t.cpPager.divId = navDivId;
		if (!curPage)
			curPage = 1;
		t.cpPager.gotoPage(curPage);
		t.cpPager.onClick = unsafeWindow[notify];
		uW.pageNavigatorView = t.cpPager;
	},
	enable: function (tf) {
		var t = PageNavigator;
		t.modalMessagesFunc.setEnable(tf);
		if (tf) {
			uW.ctrlPagination = t.ctrlPagination;
			uW.loadPage_pagination = t.loadPage_pagination;
		} else {
			uW.ctrlPagination = t.ctrlPaginationOld;
			uW.loadPage_pagination = t.loadPage_paginationOld;
		}
	},
	isAvailable: function () {
		var t = PageNavigator;
		return t.modalMessagesFunc.isAvailable();
	},
	Cpager: function (a, b) {
		// public function protos ...
		this.getHtmlElement = getHtmlElement;
		this.setPageCount = setPageCount;
		this.getPageCount = getPageCount;
		this.getCurrentPage = getCurrentPage;
		this.gotoPage = gotoPage;
		this.e_but = e_but;
		this.e_inp = e_inp;
		//    
		var t = this;
		this.onClick = null;
		this.numPages = b;
		this.curPage = a;
		this.oldStyle = false;

		function getHtmlElement() {
			function aButton(msg, evtPage) {
				return '<A class=ptPageNav onclick="pageNavigatorView.e_but(\'' + evtPage + '\')"><SPAN class=ptPageNav>' + msg + '</span></a>';
			}
			var div = document.createElement('div');
			div.id = 'ptPageNavBar';
			div.innerHTML = '<STYLE>table.ptPageNav tr td  {border:none; text-align:center; padding:0px 1px;}\
        span.ptPageNav {font-size:12px; background:inherit; line-height:135%}\
        A.ptPageNav {background-color:#44e; color:#ff4; display:block; border:1px solid #666666; height:18px; width:18px;}\
        A.ptPageNav:hover {background-color:#66f;}\
        A.ptPageNav:active {background-color:#186}\
        </style>\
        <TABLE class=ptPageNav><TR valign=middle>\
        <TD style="margin-right:15px">' + aButton('<SPAN style="padding-right:0.8em; letter-spacing:-0.99em;">&#x258f;&#x258f;&#x25c4;</span>', 'F') + '</td>\
        <TD>' + aButton('&#x25c4', '-') + '</td>\
        <TD>' + aButton('&#x25ba', '+') + '</td>\
        <TD style="margin-right:15px">' + aButton('<SPAN style="padding-right:1.05em; letter-spacing:-0.99em;">&#x25ba;&#x2595;&#x2595;</span>', 'L') + '</td>\
        <TD width=20></td><TD>Page <INPUT id=ptPagerPageNum onChange="pageNavigatorView.e_inp()" type=text size=1> OF <span id=ptPagerNumPages>?</span></td>\
        </tr></table>';
			var mml = document.getElementById('modal_msg_list');
			if (mml != null)
				mml.style.minHeight = '400px';
			return div;
		}

		function getPageCount() { // koc needs for 'back'
			return t.numPages;
		}

		function getCurrentPage() { // koc needs for 'back'
			return t.curPage;
		}

		function setPageCount(c) {
			t.numPages = c;
			document.getElementById('ptPagerNumPages').innerHTML = c;
			var mml = document.getElementById('modal_msg_list');
			if (mml != null) {
				if (document.getElementById('modal_msg_tabs_report').className.indexOf('selected') >= 0)
					mml.style.minHeight = '460px';
				else
					mml.style.minHeight = '400px';
			}
		}

		function gotoPage(p) {
			t.curPage = parseIntZero(p);
			document.getElementById('ptPagerPageNum').value = t.curPage;
		}

		function e_but(p) {
			if (p == 'F' && t.curPage != 1)
				loadPage(1);
			else if (p == '-' && t.curPage > 1)
				loadPage(t.curPage - 1);
			else if (p == '+' && t.curPage < t.numPages)
				loadPage(t.curPage + 1);
			else if (p == 'L' && t.curPage != t.numPages)
				loadPage(t.numPages);

			function loadPage(p) {
				if (t.oldStyle)
					t.gotoPage(p);
				t.onClick(p);
			}
		}

		function e_inp(p) {
			var pageNum = parseIntZero(document.getElementById('ptPagerPageNum').value);
			t.onClick(pageNum);
		}
	},
}

function addScript(scriptText) {
	var scr = document.createElement('script');
	scr.innerHTML = scriptText;
	document.body.appendChild(scr);
	//    setTimeout ( function (){document.body.removeChild(scr);}, 500);
}
addScript('uwuwuwFunc = function (text){ eval (text);  }');
/************* Updater code *************/
// Function for displaying a confirmation message modal popup similar to the default javascript confirm() function
// but with the advantage being that it won't halt all other javascript being executed on the page.
// Original Author: Thomas Chapin (April 6, 2011)
function display_confirm(confirm_msg, ok_function, cancel_function) {
	if (!confirm_msg) {
		confirm_msg = "";
	}
	var container_div = document.getElementById('modal_js_confirm');
	var div;
	if (!container_div) {
		container_div = document.createElement('div');
		container_div.id = 'modal_js_confirm';
		container_div.style.position = 'absolute';
		container_div.style.top = '0px';
		container_div.style.left = '0px';
		container_div.style.width = '100%';
		container_div.style.height = '1px';
		container_div.style.overflow = 'visible';
		container_div.style.zIndex = 100000;
		div = document.createElement('div');
		div.id = 'modal_js_confirm_contents';
		div.style.zIndex = 100000;
		div.style.backgroundColor = '#eee';
		div.style.fontFamily = '"lucida grande",tahoma,verdana,arial,sans-serif';
		div.style.fontSize = '11px';
		div.style.textAlign = 'center';
		div.style.color = '#333333';
		div.style.border = '2px outset #666';
		div.style.padding = '10px';
		div.style.position = 'relative';
		div.style.width = '300px';
		div.style.height = '100px';
		div.style.margin = '300px auto 0px auto';
		div.style.display = 'block';
		container_div.appendChild(div);
		document.body.appendChild(container_div);
		div.innerHTML = '<div style="text-align:center"><div>' + confirm_msg + '</div><br/><div>Press OK to continue.</div><br><button id="modal_js_confirm_ok_button">OK</button> <button id="modal_js_confirm_cancel_button">Cancel</button></div>';
		var ok_button = document.getElementById('modal_js_confirm_ok_button');
		ok_button.addEventListener('click', function () {
			if (ok_function && typeof (ok_function) == "function") {
				ok_function();
			}
			container_div.parentNode.removeChild(container_div);
		}, false);
		var cancel_button = document.getElementById('modal_js_confirm_cancel_button');
		cancel_button.addEventListener('click', function () {
			if (cancel_function && typeof (cancel_function) == "function") {
				cancel_function();
			}
			container_div.parentNode.removeChild(container_div);
		}, false);
	}
}
// The following code is released under public domain.
var AutoUpdater_116541 = {
	id: 116541,
	days: 1,
	name: "KOC Power Tools",
	version: Version,
	beta: GlobalOptions.ptupdatebeta,
	betaUrl: 'https://koc-power-tools.googlecode.com/svn/trunk/koc_power_tools.user.js',
	time: new Date().getTime(),
	call: function (response, secure) {
		GM_xmlhttpRequest({
			method: 'GET',
			url: this.beta ? this.betaUrl : 'http' + (secure ? 's' : '') + '://greasyfork.org/scripts/893-koc-power-tools/code/KOC Power Tools.user.js',
			onload: function (xpr) {
				AutoUpdater_116541.compare(xpr, response);
			},
			onerror: function (xpr) {
				if (secure) AutoUpdater_116541.call(response, false);
			}
		});
	},
	enable: function () {
		GM_registerMenuCommand("Enable " + this.name + " updates", function () {
			GM_setValue('updated_116541', new Date().getTime() + '');
			AutoUpdater_116541.call(true, true)
		});
	},
	compareVersion: function (r_version, l_version) {
		var r_parts = r_version.split(''),
			l_parts = l_version.split(''),
			r_len = r_parts.length,
			l_len = l_parts.length,
			r = l = 0;
		for (var i = 0, len = (r_len > l_len ? r_len : l_len); i < len && r == l; ++i) {
			r = +(r_parts[i] || '0');
			l = +(l_parts[i] || '0');
		}
		return (r !== l) ? r > l : false;
	},
	compare: function (xpr, response) {
		this.xversion = /\/\/\s*@version\s+(.+)\s*\n/i.exec(xpr.responseText);
		this.xname = /\/\/\s*@name\s+(.+)\s*\n/i.exec(xpr.responseText);
		if ((this.xversion) && (this.xname[1] == this.name)) {
			this.xversion = this.xversion[1];
			this.xname = this.xname[1];
		} else {
			if ((xpr.responseText.match("the page you requested doesn't exist")) || (this.xname[1] != this.name)) {
				//GM_setValue('updated_116541', 'off');
			}
			return false;
		}
		var updated = this.compareVersion(this.xversion, this.version);
		if (updated) {
			display_confirm('A new version of ' + this.xname + ' is available.\nDo you wish to install the latest version?',
				// Ok
				function () {
					try {
						location.href = this.beta ? this.betaUrl : 'https://greasyfork.org/scripts/893-koc-power-tools/code/KOC Power Tools.user.js';
					} catch (e) {}
				},
				// Cancel
				function () {
					if (AutoUpdater_116541.xversion) {
						if (confirm('Do you want to turn off auto updating for this script?')) {
							//GM_setValue('updated_116541', 'off');
							GlobalOptions.ptupdate = false;
							GM_setValue('Options_??', JSON2.stringify(GlobalOptions));
							AutoUpdater_116541.enable();
							alert('Automatic updates can be re-enabled for this script from the User Script Commands submenu.');
						}
					}
				}
			);
		} else if (response) {
			alert('No updates available for ' + this.name);
		}
	},
	check: function (tf) {
		if (!tf) {
			this.enable();
		} else {
			if (+this.time > (+GM_getValue('updated_116541', 0) + 1000 * 60 * 60 * 24 * this.days)) {
				GM_setValue('updated_116541', this.time + '');
				this.call(false, true);
			}
			GM_registerMenuCommand("Check " + this.name + " for updates", function () {
				GM_setValue('updated_116541', new Date().getTime() + '');
				AutoUpdater_116541.call(true, true)
			});
		}
	}
};
if (typeof (GM_xmlhttpRequest) !== 'undefined' && typeof (GM_updatingEnabled) === 'undefined') { // has an updater?
	try {
		if (unsafeWindow.frameElement === null) {
			AutoUpdater_116541.check(GlobalOptions.ptupdate);
		}
	} catch (e) {
		AutoUpdater_116541.check(GlobalOptions.ptupdate);
	}
}
/********* End updater code *************/
//****************************
//This is a new implementation of the CalterUwFunc class to modify a function of the 'unsafewWindow' object.
//For reverse compatibility this implementation operates like the original, but multiple CalterUwFunc objects can be created for the same function.
//Each CalterUwFunc can be enabled or diabled independently.  (Of course, the repalcement strings must be compatibile with each other to work
//simulataneously).
//The implementation uses a worker class CalterFuncModifier.  One and only one CalterFuncModifier is created for each uw function modified.
//CalterFuncModifier allows multiple modifier string pairs to be applied.  For individual control of specific mods, access the 'modIndex'
//member to determine the index of the first mod and then directly call the operations of the 'funcModifier' member.
//This implementation creates/uses a registry of CalterFuncModifier's that is added to the unsafeWindow object so that changes
//to the same function in different scripts is possible.
//****************************
var CalterUwFunc = function (funcName, findReplace) {
	this.isAvailable = isAvailable;
	this.setEnable = setEnable;
	this.funcName = funcName;
	this.funcModifier = null;
	this.modIndex = 0;
	this.numberMods = 0;
	// find an existing CalterUwFunc if it already exists
	if (!unsafeWindow.calterRegistry) unsafeWindow.calterRegistry = {};
	var calterF = null;
	if (unsafeWindow.calterRegistry[funcName]) {
		// use the existing function modifier
		calterF = unsafeWindow.calterRegistry[funcName];
		for (i = 0; i < findReplace.length; i++) {
			calterF.addModifier(findReplace[i]);
		}
	} else {
		// create and register the new calter
		calterF = new CalterFuncModifier(funcName, findReplace);
		unsafeWindow.calterRegistry[funcName] = calterF;
	}
	this.funcModifier = calterF;
	if (findReplace != null) {
		this.numberMods = findReplace.length;
		this.modIndex = this.funcModifier.numModifiers() - this.numberMods;
	}

	function isAvailable() {
		// check if any of the replace strings matched the original function
		var avail = false;
		for (i = this.modIndex; i < this.modIndex + this.numberMods; i++) {
			if (this.funcModifier.testModifier(i)) avail = true;
		}
		return avail;
	}

	function setEnable(tf) {
		this.funcModifier.enableModifier(this.modIndex, tf, this.numberMods);
	}
}
var CalterFuncModifier = function (funcName, findReplace) {
	// (second argument is now optional )
	this.applyModifiers = applyModifiers;
	this.addModifier = addModifier;
	this.enableModifier = enableModifier;
	this.testModifier = testModifier;
	this.modEnabled = modEnabled;
	this.numModifiers = numModifiers;
	this.funcName = funcName;
	this.funcOld = null;
	this.funcOldString = null;
	this.funcNew = null;
	this.modifiers = [];
	this.modsActive = [];
	try {
		var x = this.funcName.split('.');
		var f = unsafeWindow;
		for (var i = 0; i < x.length; i++)
			f = f[x[i]];
		ft = f.toString();
		this.funcOld = f;
		this.funcOldString = ft.replace('function ' + this.funcName, 'function');
		if (findReplace) {
			this.modifiers = findReplace;
			this.modsActive = new Array(findReplace.length);
			for (var i = 0; i < findReplace.length; i++) {
				this.modsActive[i] = false;
			}
		}
	} catch (err) {
		logit("CalterFuncModifier " + this.funcName + " " + err);
	}
	// test if this modifier works on the original function.
	//    true = match found / replace possible
	//    false = does not match
	function testModifier(modNumber) {
		x = this.funcOldString.replace(this.modifiers[modNumber][0], this.modifiers[modNumber][1]);
		if (x != this.funcOldString) {
			return true;
		}
		return false;
	}
	// use the active modifiers to create/apply a new function
	function applyModifiers() {
		try {
			var rt = this.funcOldString;
			var active = false;
			for (var i = 0; i < this.modifiers.length; i++) {
				if (!this.modsActive[i]) continue;
				x = rt.replace(this.modifiers[i][0], this.modifiers[i][1]);
				if (x == rt) // if not found
				{
					// print out an error message when the match fails.
					// These messages get lost on a refresh, so wait a few seconds to put it in the error log.
					setTimeout(function (fname, repStr, ftstr) {
						return function () {
							logit("Unable to replace string in function " + fname);
							logit("Replacment string:" + repStr);
							logit("Function listing: " + ftstr);
							return;
						}
					}(this.funcName, this.modifiers[i][0], ft), 3000);
				} else {}
				rt = x;
				active = true;
			}
			this.funcNew = rt;
			if (active) {
				// apply the new function
				uW.uwuwuwFunc(this.funcName + ' = ' + this.funcNew);
			} else {
				// set to the original function
				var x1 = this.funcName.split('.');
				var f1 = unsafeWindow;
				for (var i = 0; i < x1.length - 1; i++)
					f1 = f1[x1[i]];
				f1[x1[x1.length - 1]] = this.funcOld;
			}
		} catch (err) {
			logit("CalterFuncModifier " + this.funcName + " " + err);
		}
	}
	// add additional modifiers.  The index of the modifier is returned so the caller can enable/disable it specificially
	function addModifier(fr) {
		this.modifiers.push(fr);
		this.modsActive.push(false);
		// return the index of the newly added modifier
		return this.modifiers.length - 1;
	}
	// turn on/off some of the modifiers.
	// 'len' allows setting consectutive modifiers to the same value.
	//   If len is null, 1 is used
	function enableModifier(modNumber, value, len) {
		if (len == null) len = 1;
		for (i = modNumber; i < modNumber + len; i++) {
			if (i < this.modsActive.length) {
				this.modsActive[i] = value;
			}
		}
		this.applyModifiers();
	}

	function modEnabled(modNumber) {
		if (modNumber < this.modsActive.length)
			return this.modsActive[modNumber];
	}

	function numModifiers() {
		return this.modifiers.length;
	}
};

function ShowExtraInfo() {
	alert('ineter');
	content = document.getElementById('mod_citylist').innerHTML
	content += "O";
	document.getElementById('mod_citylist').innerHTML = content;
}
var MarchUnitsFix = {
	init: function () {
		var t = MarchUnitsFix;
		t.fixrallymarchsize = new CalterUwFunc('modal_attack_update_unt_max', [
			['\}\)\)\;', '})*(1 + Math.min(cm.ThroneController.effectBonus(66),150)/100)-0.001);']
		]);
		t.fixrallymarchsize.setEnable(Options.fixMarchUnits);
	},
	setEnable: function (tf) {
		var t = MarchUnitsFix;
		t.fixrallymarchsize.setEnable(tf);
	},
	isAvailable: function () {
		var t = MarchUnitsFix;
		return t.fixrallymarchsize.isAvailable();
	},
}
var LoadCapFix = {
	init: function () {
		var t = LoadCapFix;
		//    t.capLoadEffect = new CalterUwFunc ('cm.MarchModal.updateTroopResource', [[/\$\("#modal/ig, 'jQuery("#modal'] , [/1\s*\+\s*loadBoost\)/i, '1 + Math.min(loadBoost,6.25+loadEffectBoost+techLoadBoost)); for(var sacIndex = 0; sacIndex < seed.queue_sacr["city" + currentcityid].length; sacIndex ++ ) if(seed.queue_sacr["city" + currentcityid][sacIndex]["unitType"] == untid) load *= seed.queue_sacr["city" + currentcityid][sacIndex]["multiplier"][0]; load=Math.floor(load-1);'] ]);
		if (FFVersion.substring(0, 4) > 16)
			t.capLoadEffect = new CalterUwFunc('cm.MarchModal.updateTroopResource', [
				[/\$\("#modal/ig, 'jQuery("#modal'],
				[/if\(jQuery/i, 'loadBoost = Math.min(loadBoost,6.25+techLoadBoost); for(var sacIndex = 0; sacIndex < seed.queue_sacr["city" + currentcityid].length; sacIndex ++ ) if(seed.queue_sacr["city" + currentcityid][sacIndex]["unitType"] == untid) unit_number *= seed.queue_sacr["city" + currentcityid][sacIndex]["multiplier"][0]; if(jQuery'],
				[/var\s*resources/i, 'load=load-1;var resources']
			]);
		else
			t.capLoadEffect = new CalterUwFunc('cm.MarchModal.updateTroopResource', [
				[/\$\("#modal/ig, 'jQuery("#modal'],
				['if (jQuery', 'loadBoost = Math.min(loadBoost,6.25+techLoadBoost); for(var sacIndex = 0; sacIndex < seed.queue_sacr["city" + currentcityid].length; sacIndex ++ ) if(seed.queue_sacr["city" + currentcityid][sacIndex]["unitType"] == untid) unit_number *= seed.queue_sacr["city" + currentcityid][sacIndex]["multiplier"][0]; if(jQuery'],
				['var resources', 'load=load-1;var resources']
			]);
		t.capLoadEffect.setEnable(Options.fixLoadCap);
	},
	setEnable: function (tf) {
		var t = LoadCapFix;
		t.capLoadEffect.setEnable(tf);
	},
	isAvailable: function () {
		var t = LoadCapFix;
		return t.capLoadEffect.isAvailable();
	},
}

function distance(d, f, c, e) {
	var a = 750;
	var g = a / 2;
	var b = Math.abs(c - d);
	if (b > g)
		b = a - b;
	var h = Math.abs(e - f);
	if (h > g)
		h = a - h;
	return Math.round(100 * Math.sqrt(b * b + h * h)) / 100;
};
var MapDistanceFix = {
	popSlotsFunc: null,
	init: function () {
		var t = MapDistanceFix;
		t.popSlotsFunc = new CalterUwFunc('MapObject.prototype.populateSlots', [
			['this.distance', 'fixMapDistance_hook']
		]);
		if (t.popSlotsFunc.isAvailable()) {
			uW.fixMapDistance_hook = t.fixMapDistance_hook;
			if (Options.fixMapDistance)
				t.enable(true);
		}
	},
	fixMapDistance_hook: function (cityX, cityY, tileX, tileY) {
		var city = Cities.byID[uW.currentcityid];
		return distance(city.x, city.y, tileX, tileY);
	},
	enable: function (tf) {
		var t = MapDistanceFix;
		t.popSlotsFunc.setEnable(tf);
	},
	isAvailable: function () {
		var t = MapDistanceFix;
		//return t.popSlotsFunc.isAvailable();
		return false;
	},
}
var tabManager = {
	tabList: {}, // {name, obj, div}
	currentTab: null,
	init: function (mainDiv) {
		var t = tabManager;
		var sorter = [];
		for (k in Tabs) {
			if (!Tabs[k].tabDisabled) {
				t.tabList[k] = {};
				t.tabList[k].name = k;
				t.tabList[k].obj = Tabs[k];
				if (Tabs[k].tabLabel != null)
					t.tabList[k].label = Tabs[k].tabLabel;
				else
					t.tabList[k].label = k;
				if (Tabs[k].tabOrder != null)
					sorter.push([Tabs[k].tabOrder, t.tabList[k]]);
				else
					sorter.push([1000, t.tabList[k]]);
				t.tabList[k].div = document.createElement('div');
			}
		}
		sorter.sort(function (a, b) {
			return a[0] - b[0]
		});
		var m = '<TABLE cellspacing=3 class=ptMainTab><TR>';
		for (var i = 0; i < sorter.length; i++) {
			m += '<TD align=center class=notSel id=pttc' + sorter[i][1].name + ' ><A><SPAN>' + sorter[i][1].label + '</span></a></td>';
			//m += '<TD align=center class=notSel id=pttc'+ sorter[i][1].name +' ><A><SPAN>'+ sorter[i][1].label +'</span></a></td>';
			if (i == 9) m += '</tr><TR>';
		}
		m += '</tr></table>';
		//m += '<TD class=spacer width=90% align=right>'+ Version +'&nbsp;</td></tr></table>';
		mainPop.getTopDiv().innerHTML = m;
		t.currentTab = null;
		for (k in t.tabList) {
			if (t.tabList[k].name == Options.currentTab)
				t.currentTab = t.tabList[k];
			document.getElementById('pttc' + k).addEventListener('click', this.e_clickedTab, false);
			var div = t.tabList[k].div;
			div.style.display = 'none';
			div.style.height = '100%';
			div.style.maxWidth = '1200px';
			div.style.overflowX = 'auto';
			mainDiv.appendChild(div);
			try {
				t.tabList[k].obj.init(div);
			} catch (e) {
				div.innerHTML = "INIT ERROR: " + e;
			}
		}
		if (t.currentTab == null)
			t.currentTab = sorter[0][1];
		t.setTabStyle(document.getElementById('pttc' + t.currentTab.name), true);
		t.currentTab.div.style.display = 'block';
	},
	hideTab: function () {
		var t = tabManager;
		t.currentTab.obj.hide();
	},
	showTab: function () {
		var t = tabManager;
		t.currentTab.obj.show();
	},
	setTabStyle: function (e, selected) {
		if (selected) {
			e.className = 'sel';
		} else {
			e.className = 'notSel';
		}
	},
	e_clickedTab: function (e) {
		var t = tabManager;
		var newTab = t.tabList[e.target.parentNode.parentNode.id.substring(4)];
		if (t.currentTab.name != newTab.name) {
			t.setTabStyle(document.getElementById('pttc' + t.currentTab.name), false);
			t.setTabStyle(document.getElementById('pttc' + newTab.name), true);
			t.currentTab.obj.hide();
			t.currentTab.div.style.display = 'none';
			t.currentTab = newTab;
			newTab.div.style.display = 'block';
			Options.currentTab = newTab.name;
		}
		newTab.obj.show();
	},
}

function setTabStyle(e, selected) {
	if (selected) {
		e.className = 'matTabSel';
	} else {
		e.className = 'matTabNotSel';
	}
}

function clickedTab(e) {
	who = e.target.id.substring(2);
	newObj = my[who];
	currentObj = my[currentName];
	if (currentName != who) {
		setTabStyle(document.getElementById('aa' + currentName), false);
		setTabStyle(document.getElementById('aa' + who), true);
		if (currentObj) {
			currentObj.hide();
			currentObj.getContent().style.display = 'none';
		}
		currentName = who;
		cont = newObj.getContent();
		newObj.getContent().style.display = 'block';
	}
	newObj.show();
}

function mouseMainTab(me) {
	if (me.button == 2) {
		var c = getClientCoords(document.getElementById('main_engagement_tabs'));
		mainPop.setLocation({
			x: c.x + 4,
			y: c.y + c.height
		});
	}
}

function eventHideShow() {
	if (mainPop.toggleHide(mainPop)) {
		tabManager.showTab();
		Options.ptWinIsOpen = true;
	} else {
		tabManager.hideTab();
		Options.ptWinIsOpen = false;
	}
	setTimeout(function () {
		saveOptions();
	}, 0);
}

function hideMe() {
	if (!Options.ptWinIsOpen)
		return;
	mainPop.show(false);
	tabManager.showTab();
	Options.ptWinIsOpen = false;
	saveOptions();
}

function showMe() {
	mainPop.show(true);
	tabManager.showTab();
	Options.ptWinIsOpen = true;
	saveOptions();
}

function addMyFunction(func) { // add function to run in our own scope
	unsafeWindow[func.name] = func;
}

function addUwFunction(func) { // add function to run in unsafeWindow's scope
	scr = document.createElement('script');
	scr.innerHTML = func.toString();
	document.body.appendChild(scr);
}

function alterUwFunction(funcName, frArray) {
	try {
		funcText = unsafeWindow[funcName].toString();
		rt = funcText.replace('function ' + funcName, 'function');
		for (i = 0; i < frArray.length; i++) {
			x = rt.replace(frArray[i][0], frArray[i][1]);
			if (x == rt)
				return false;
			rt = x;
		}
		js = funcName + ' = ' + rt;
		var scr = document.createElement('script');
		scr.innerHTML = js;
		document.body.appendChild(scr);
		return true;
	} catch (err) {
		return false;
	}
}

function setCities() {
	Cities.numCities = Seed.cities.length;
	Cities.cities = [];
	Cities.byID = {};
	for (i = 0; i < Cities.numCities; i++) {
		city = {};
		city.idx = i;
		city.id = parseInt(Seed.cities[i][0]);
		city.name = Seed.cities[i][1];
		city.x = parseInt(Seed.cities[i][2]);
		city.y = parseInt(Seed.cities[i][3]);
		city.tileId = parseInt(Seed.cities[i][5]);
		city.provId = parseInt(Seed.cities[i][4]);
		getTroopDefTrainEstimates('city' + city.id, city);
		Cities.cities[i] = city;
		Cities.byID[Seed.cities[i][0]] = city;
	}
}

function getTroopDefTrainEstimates(cityID, city) {
	var b = Seed.buildings[cityID];
	city.numCottages = 0;
	city.numBarracks = 0;
	city.maxBarracks = 0;
	city.totLevelsBarracks = 0;
	city.blacksmithLevel = 0;
	city.stableLevel = 0;
	city.workshopLevel = 0;
	city.wallLevel = 0;
	for (var j = 1; j < 33; j++) {
		if (b['pos' + j]) {
			var bname = parseInt(b['pos' + j][0]);
			var blvl = parseInt(b['pos' + j][1]);
			switch (bname) {
			case 13:
				city.numBarracks++;
				city.totLevelsBarracks += parseInt(blvl);
				if (blvl > city.maxBarracks) city.maxBarracks = blvl;
				break;
			case 5:
				city.numCottages++;
				break;
			case 15:
				city.blacksmithLevel = blvl;
				break;
			case 16:
				city.workshopLevel = blvl;
				break;
			case 17:
				city.stableLevel = blvl;
				break;
			case 19:
				city.wallLevel = blvl;
				break;
			}
		}
	}
	var isPrestige = getCityPrestige(city.id);
	if (isPrestige) {
		city.blacksmithLevel = 12;
		city.workshopLevel = 12;
		city.stableLevel = 12;
	}
	var now = unixTime();
	city.marshallCombatScore = 0;
	var s = Seed.knights[cityID];
	if (s) {
		s = s["knt" + Seed.leaders[cityID].combatKnightId];
		if (s) {
			city.marshallCombatScore = s.combat;
			if (s.combatBoostExpireUnixtime > now)
				city.marshallCombatScore *= 1.25;
		}
	}
	city.foremanBasePoliticsScore = 0;
	var s = Seed.knights[cityID];
	if (s) {
		s = s["knt" + Seed.leaders[cityID].politicsKnightId];
		if (s) {
			city.foremanBasePoliticsScore = s.politics;
			if (s.politicsBoostExpireUnixtime > now)
				city.foremanBasePoliticsScore *= 1.25;
		}
	}
	city.loggingLevel = parseInt(Seed.tech["tch2"]);
	city.geometryLevel = parseInt(Seed.tech["tch5"]);
	city.eagleEyesLevel = parseInt(Seed.tech["tch6"]);
	city.poisonedEdgeLevel = parseInt(Seed.tech["tch8"]);
	city.metalAlloysLevel = parseInt(Seed.tech["tch9"]);
	city.featherweightPowderLevel = parseInt(Seed.tech["tch10"]);
	city.alloyHorseshoesLevel = parseInt(Seed.tech["tch12"]);
	city.fletchingLevel = parseInt(Seed.tech["tch13"]);
	city.giantsStrengthLevel = parseInt(Seed.tech["tch16"]);
	var bm = city.numBarracks + 0.1 * (city.totLevelsBarracks - city.numBarracks);
	var mf = city.marshallCombatScore / 200;
	var gf = city.geometryLevel / 10;
	var sf = city.stableLevel / 10;
	var wf = city.workshopLevel / 10;
	var isf = bm * (1 + mf + gf);
	var csf = bm * (1 + mf + gf + sf);
	var ssf = bm * (1 + mf + gf + sf + wf);
	var pf = city.foremanBasePoliticsScore / 200;
	var gsf = city.giantsStrengthLevel / 10;
	var dsf = 1 + pf + gsf;
	city.Troop1Time = ((city.maxBarracks > 0) ? (50 / isf) : 0);
	city.Troop2Time = city.Troop1Time / 2;
	city.Troop3Time = ((city.maxBarracks > 1 && city.eagleEyesLevel > 0) ? (100 / isf) : 0);
	city.Troop4Time = ((city.maxBarracks > 1 && city.poisonedEdgeLevel > 0) ? (150 / isf) : 0);
	city.Troop5Time = ((city.maxBarracks > 2 && city.blacksmithLevel > 0 && city.metalAlloysLevel > 0) ? (225 / isf) : 0);
	city.Troop6Time = ((city.maxBarracks > 3 && city.fletchingLevel > 0) ? (350 / isf) : 0);
	city.Troop7Time = ((city.maxBarracks > 4 && city.stableLevel > 0 && city.alloyHorseshoesLevel > 0) ? (500 / csf) : 0);
	city.Troop8Time = ((city.maxBarracks > 6 && city.blacksmithLevel > 4 && city.stableLevel > 4 && city.alloyHorseshoesLevel > 4) ? (1500 / csf) : 0);
	city.Troop9Time = ((city.maxBarracks > 5 && city.stableLevel > 0 && city.workshopLevel > 2 && city.featherweightPowderLevel > 0) ? (1000 / ssf) : 0);
	city.Troop10Time = ((city.maxBarracks > 7 && city.stableLevel > 1 && city.workshopLevel > 4 && city.geometryLevel > 4 && city.fletchingLevel > 5) ? (3000 / ssf) : 0);
	city.Troop11Time = ((city.maxBarracks > 8 && city.blacksmithLevel > 4 && city.stableLevel > 2 && city.workshopLevel > 6 && city.metalAlloysLevel > 7 && city.geometryLevel > 6) ? (4500 / ssf) : 0);
	city.Troop12Time = ((city.maxBarracks > 9 && city.stableLevel > 1 && city.workshopLevel > 8 && city.geometryLevel > 9 && city.fletchingLevel > 9) ? (6000 / ssf) : 0);
	city.Def53Time = ((city.wallLevel > 5 && city.blacksmithLevel > 5 && city.fletchingLevel > 4) ? (180 / dsf) : 0);
	city.Def55Time = ((city.wallLevel > 7 && city.blacksmithLevel > 7 && city.fletchingLevel > 6 && city.geometryLevel > 6) ? (135 / dsf) : 0);
	city.Def60Time = ((city.wallLevel > 3 && city.blacksmithLevel > 3 && city.poisonedEdgeLevel > 1) ? (90 / dsf) : 0);
	city.Def61Time = ((city.wallLevel > 0 && city.metalAlloysLevel > 0) ? (30 / dsf) : 0);
	city.Def62Time = ((city.wallLevel > 1 && city.blacksmithLevel > 1 && city.loggingLevel > 1) ? (60 / dsf) : 0);
}

function officerId2String(oid) {
	if (oid == null)
		return '';
	else if (oid == 3)
		return uW.allianceOfficerTypeMapping[3];
	else if (oid == 2)
		return uW.allianceOfficerTypeMapping[2];
	else if (oid == 1)
		return uW.allianceOfficerTypeMapping[1];
	else if (oid == 4)
		return uW.allianceOfficerTypeMapping[4];
	return '';
}
// onClick (city{name, id, x, y}, x, y)   city may be null!
function CdispCityPicker(id, span, dispName, notify, selbut) {
	function CcityButHandler(t) {
		var that = t;
		this.clickedCityBut = clickedCityBut;

		function clickedCityBut(e) {
			if (that.selected != null)
				that.selected.className = "ptcastleBut ptcastleButNon";
			that.city = Cities.cities[e.target.id.substr(that.prefixLen)];
			if (that.dispName)
				document.getElementById(that.id + 'cname').innerHTML = that.city.name;
			e.target.className = "ptcastleBut ptcastleButSel";
			that.selected = e.target;
			if (that.coordBoxX) {
				that.coordBoxX.value = that.city.x;
				that.coordBoxY.value = that.city.y;
				that.coordBoxX.style.backgroundColor = '#ffffff';
				that.coordBoxY.style.backgroundColor = '#ffffff';
			}
			if (that.notify != null)
				that.notify(that.city, that.city.x, that.city.y);
		}
	}

	function selectBut(idx) {
		document.getElementById(this.id + '_' + idx).click();
	}

	function bindToXYboxes(eX, eY) {
		function CboxHandler(t) {
			var that = t;
			this.eventChange = eventChange;
			if (that.city) {
				eX.value = that.city.x;
				eY.value = that.city.y;
			}

			function eventChange() {
				var xValue = that.coordBoxX.value.trim();
				var xI = /^\s*([0-9]+)[\s,]+([0-9]+)/.exec(xValue);
				if (xI) {
					that.coordBoxX.value = xI[1]
					that.coordBoxY.value = xI[2]
				}
				var x = parseInt(that.coordBoxX.value, 10);
				var y = parseInt(that.coordBoxY.value, 10);
				if (isNaN(x) || x < 0 || x > 750) {
					that.coordBoxX.style.backgroundColor = '#ff8888';
					return;
				}
				if (isNaN(y) || y < 0 || y > 750) {
					that.coordBoxY.style.backgroundColor = '#ff8888';
					return;
				}
				that.coordBoxX.style.backgroundColor = '#ffffff';
				that.coordBoxY.style.backgroundColor = '#ffffff';
				if (that.notify != null)
					that.notify(null, x, y);
			}
		}
		this.coordBoxX = eX;
		this.coordBoxY = eY;
		var bh = new CboxHandler(this);
		eX.size = 2;
		eX.maxLength = 10;
		eY.size = 2;
		eY.maxLength = 3;
		eX.addEventListener('change', bh.eventChange, false);
		eY.addEventListener('change', bh.eventChange, false);
	}
	this.selectBut = selectBut;
	this.bindToXYboxes = bindToXYboxes;
	this.coordBoxX = null;
	this.coordBoxY = null;
	this.id = id;
	this.dispName = dispName;
	this.prefixLen = id.length + 1;
	this.notify = notify;
	this.selected = null;
	this.city = null;
	var m = '';
	for (var i = 0; i < Cities.cities.length; i++)
		m += '<INPUT class="ptcastleBut ptcastleButNon" id="' + id + '_' + i + '" value="' + (i + 1) + '" type=submit \>';
	if (dispName)
		m += ' &nbsp; <SPAN style="display:inline-block; width:85px; font-weight:bold;" id=' + id + 'cname' + '></span>';
	span.innerHTML = m;
	var handler = new CcityButHandler(this);
	for (var i = 0; i < Cities.cities.length; i++)
		document.getElementById(id + '_' + i).addEventListener('click', handler.clickedCityBut, false);
	if (selbut != null)
		this.selectBut(selbut);
};

function CdialogCancelContinue(msg, canNotify, contNotify, centerElement) {
	var pop = new CPopup('ptcancont', 0, 0, 400, 200, true, canNotify);
	if (centerElement)
		pop.centerMe(centerElement);
	else
		pop.centerMe(document.body);
	pop.getTopDiv().innerHTML = '<CENTER>KOC Power Tools</center>';
	pop.getMainDiv().innerHTML = '<TABLE class=ptTab align=center style="height: 100%"><TR align=center height=90%><TD>' + msg + '</td></tr>\
      <TR align=center><TD><INPUT id=ptcccancel type=submit value="CANCEL" \> &nbsp; &nbsp; <INPUT id=ptcccontin type=submit value="CONTINUE" \></td></tr></table>';
	document.getElementById('ptcccancel').addEventListener('click', function () {
		pop.show(false);
		if (canNotify) canNotify();
	}, false);
	document.getElementById('ptcccontin').addEventListener('click', function () {
		pop.show(false);
		if (contNotify) contNotify();
	}, false);
	pop.show(true);
}
// TODO: make class (multiple instances needed)
function dialogRetry(errMsg, errCode, url, retry, seconds, onRetry, onCancel) {
	seconds = parseInt(seconds);
	var pop = new CPopup('ptretry', 0, 0, 400, 225, true);
	pop.centerMe(mainPop.getMainDiv());
	pop.getTopDiv().innerHTML = '<CENTER>KOC Power Tools</center>';
	pop.getMainDiv().innerHTML = '<CENTER><BR><FONT COLOR=#550000><B>An error has occurred:</b></font><BR><BR><DIV id=paretryErrMsg></div>\
      <BR><BR><B>Automatically retrying in <SPAN id=paretrySeconds></b></span> seconds ...<BR><BR><DIV id=paretryCmd></div><BR><INPUT id=paretryCancel type=submit value="CANCEL Retry" \>';
	document.getElementById('paretryCancel').addEventListener('click', doCancel, false);
	pop.show(true);
	if (errCode && unsafeWindow.g_js_strings.errorcode['err_' + errCode])
		document.getElementById('paretryErrMsg').innerHTML = unsafeWindow.g_js_strings.errorcode['err_' + errCode];
	else
		document.getElementById('paretryErrMsg').innerHTML = errMsg;
	document.getElementById('paretryCmd').innerHTML = url + ' (Retry ' + (retry + 1) + ' of 5)';
	document.getElementById('paretrySeconds').innerHTML = seconds;
	var rTimer = setTimeout(doRetry, seconds * 1000);
	countdown();

	function countdown() {
		document.getElementById('paretrySeconds').innerHTML = seconds--;
		if (seconds > 0)
			cdTimer = setTimeout(countdown, 1000);
	}

	function doCancel() {
		clearTimeout(rTimer);
		clearTimeout(cdTimer);
		pop.destroy();
		onCancel();
	}

	function doRetry() {
		clearTimeout(rTimer);
		clearTimeout(cdTimer);
		pop.show(false);
		onRetry();
	}
}

function implodeUrlArgs(obj) {
	var a = [];
	for (var k in obj)
		a.push(k + '=' + encodeURI(obj[k]));
	return a.join('&');
}
// NOTE: args can be either a string which will be appended as is to url or an object of name->values
function addUrlArgs(url, args) {
	if (!args)
		return url;
	if (url.indexOf('?') < 0)
		url += '?';
	else if (url.substr(url.length - 1) != '&')
		url += '&';
	if (matTypeof(args == 'object'))
		return url + implodeUrlArgs(args);
	return url + args;
}
// emulate protoype's Ajax.Request ...
function AjaxRequest(url, opts) {
	var headers = {
		'X-Requested-With': 'XMLHttpRequest',
		'X-Prototype-Version': '1.6.1',
		'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
	};
	var ajax = null;
	if (DEBUG_TRACE_AJAX) logit("AJAX: " + url + "\n" + inspect(opts, 3, 1));
	if (window.XMLHttpRequest)
		ajax = new XMLHttpRequest();
	else
		ajax = new ActiveXObject("Microsoft.XMLHTTP");
	if (opts.method == null || opts.method == '')
		method = 'GET';
	else
		method = opts.method.toUpperCase();
	if (method == 'POST') {
		headers['Content-type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
	} else if (method == 'GET') {
		addUrlArgs(url, opts.parameters);
	}
	ajax.onreadystatechange = function () {
		//  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; states 0-4
		if (ajax.readyState == 4) {
			if (ajax.status >= 200 && ajax.status < 305)
				if (opts.onSuccess) opts.onSuccess(ajax);
				else
			if (opts.onFailure) opts.onFailure(ajax);
		} else {
			if (opts.onChange) opts.onChange(ajax);
		}
	}
	ajax.open(method, url, true); // always async!
	for (var k in headers)
		ajax.setRequestHeader(k, headers[k]);
	if (matTypeof(opts.requestHeaders) == 'object')
		for (var k in opts.requestHeaders)
			ajax.setRequestHeader(k, opts.requestHeaders[k]);
	if (method == 'POST') {
		var a = [];
		for (k in opts.parameters)
			a.push(k + '=' + opts.parameters[k]);
		ajax.send(a.join('&'));
	} else {
		ajax.send();
	}
}

function MyAjaxRequest(url, o, noRetry) {
	if (DEBUG_TRACE) logit(" 0 myAjaxRequest: " + url + "\n" + inspect(o, 2, 1));
	var opts = uW.Object.clone(o);
	var wasSuccess = o.onSuccess;
	var wasFailure = o.onFailure;
	var retry = 0;
	var delay = 5;
	var noRetry = noRetry === true ? true : false;
	opts.onSuccess = mySuccess;
	opts.onFailure = myFailure;
	if (DEBUG_TRACE) logit(" 1a myAjaxRequest: " + url + "\n" + inspect(o, 2, 1));
	new AjaxRequest(url, opts);
	return;

	function myRetry() {
		++retry;
		new AjaxRequest(url, opts);
		//delay = delay * 1.25;
	}

	function myFailure() {
		var o = {};
		if (DEBUG_TRACE) logit("myAjaxRequest.myFailure(): " + inspect(rslt, 1, 1));
		o.ok = false;
		o.errorMsg = "AJAX Communication Failure";
		wasFailure(o);
	}

	function mySuccess(msg) {
		var rslt;
		try {
			rslt = JSON2.parse(msg.responseText);
		} catch (e) {
			//alert(unescape(msg.responseText));
			if (retry < 5) {
				rslt = {
					"ok": false,
					"error_code": 9,
					"errorMsg": "Failed due to invalid json"
				}
			} else {
				rslt = {
					"ok": true,
					"error_code": 9,
					"data": []
				};
			}
		}
		var x;
		if (window.EmulateAjaxError) {
			rslt.ok = false;
			rslt.error_code = 8;
		}
		if (rslt.ok) {
			if (rslt.updateSeed)
				unsafeWindow.update_seed(rslt.updateSeed);
			wasSuccess(rslt);
			return;
		}
		rslt.errorMsg = unsafeWindow.printLocalError((rslt.error_code || null), (rslt.msg || null), (rslt.feedback || null));
		/*if ( (x = rslt.errorMsg.indexOf ('<br><br>')) > 0)
      rslt.errorMsg = rslt.errorMsg.substr (0, x-1);*/
		if (!noRetry && (rslt.error_code == 0 || rslt.error_code == 8 || rslt.error_code == 1 || rslt.error_code == 3)) {
			dialogRetry(rslt.errorMsg, rslt.error_code, url, retry, delay, function () {
				myRetry()
			}, function () {
				wasSuccess(rslt)
			});
		} else {
			wasSuccess(rslt);
		}
	}
}

function AsyncAjaxRequest(url, opts) {
	var headers = {
		'X-Requested-With': 'XMLHttpRequest',
		'X-Prototype-Version': '1.6.1',
		'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
	};
	var ajax = null;
	if (window.XMLHttpRequest)
		ajax = new XMLHttpRequest();
	else
		ajax = new ActiveXObject("Microsoft.XMLHTTP");
	if (opts.method == null || opts.method == '')
		method = 'GET';
	else
		method = opts.method.toUpperCase();
	if (method == 'POST') {
		headers['Content-type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
	} else if (method == 'GET') {
		addUrlArgs(url, opts.parameters);
	}
	ajax.onreadystatechange = function () {
		//  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; states 0-4
		if (ajax.readyState == 4) {
			if (ajax.status == 500)
				if (opts.onFailure) opts.onFailure(ajax);
			if (ajax.status >= 200 && ajax.status < 305)
				if (opts.onSuccess) opts.onSuccess(ajax);
				else
			if (opts.onFailure) opts.onFailure(ajax);
			Options.ResponseSize += parseInt(ajax.getResponseHeader("Content-Length"));
		} else {
			if (opts.onChange) opts.onChange(ajax);
		}
	}
	ajax.open(method, url, false);
	for (var k in headers)
		ajax.setRequestHeader(k, headers[k]);
	if (matTypeof(opts.requestHeaders) == 'object')
		for (var k in opts.requestHeaders)
			ajax.setRequestHeader(k, opts.requestHeaders[k]);
	if (method == 'POST') {
		var a = [];
		for (k in opts.parameters) {
			if (matTypeof(opts.parameters[k]) == 'object')
				for (var h in opts.parameters[k])
					a.push(k + '[' + h + '] =' + opts.parameters[k][h]);
			else
				a.push(k + '=' + opts.parameters[k]);
		}
		ajax.send(a.join('&'));
	} else {
		ajax.send();
	}
}
// returns: 'neutral', 'friendly', or 'hostile'
function getDiplomacy(aid) {
	if (Seed.allianceDiplomacies == null)
		return uW.g_js_strings.commonstr.neutral;
	if (Seed.allianceDiplomacies.friendly && Seed.allianceDiplomacies.friendly['a' + aid] != null)
		return uW.g_js_strings.commonstr.friendly;
	if (Seed.allianceDiplomacies.hostile && Seed.allianceDiplomacies.hostile['a' + aid] != null)
		return uW.g_js_strings.commonstr.hostile;
	if (aid == Seed.allianceDiplomacies.allianceId)
		return uW.g_js_strings.modaltitles.alliance;
	return uW.g_js_strings.commonstr.neutral;
};

function getMyAlliance() {
	if (Seed.allianceDiplomacies == null || Seed.allianceDiplomacies.allianceName == null)
		return [0, 'None'];
	else
		return [Seed.allianceDiplomacies.allianceId, Seed.allianceDiplomacies.allianceName];
}
// TODO: Check times for expired marches !?!?!
// note: unselected city has outdated info
function getMarchInfo() {
	var ret = {};
	ret.marchUnits = [];
	ret.returnUnits = [];
	ret.resources = [];
	for (var ui in uW.cm.UNIT_TYPES) {
		i = uW.cm.UNIT_TYPES[ui];
		ret.marchUnits[i] = 0;
		ret.returnUnits[i] = 0;
	}
	for (i = 0; i < 5; i++) {
		ret.resources[i] = 0;
	}
	var now = unixTime();
	for (i = 0; i < Cities.numCities; i++) { // each city
		cityID = 'city' + Cities.cities[i].id;
		for (k in Seed.queue_atkp[cityID]) { // each march
			march = Seed.queue_atkp[cityID][k];
			if (typeof (march) == 'object') {
				for (var ui in uW.cm.UNIT_TYPES) {
					ii = uW.cm.UNIT_TYPES[ui];
					ret.marchUnits[ii] += parseIntNan(march['unit' + ii + 'Count']);
					ret.returnUnits[ii] += parseIntNan(march['unit' + ii + 'Return']);
				}
				for (ii = 1; ii < 5; ii++) {
					ret.resources[ii] += parseIntNan(march['resource' + ii]);
				}
				ret.resources[0] += parseIntNan(march['gold']);
			}
			// TODO: fixup completed marches
			// TODO: Assume transport is complete ?
		}
	}
	return ret;
}

function getTrainInfo() {
	var ret = {};
	ret.trainUnts = [];
	for (var ui in uW.cm.UNIT_TYPES) {
		i = uW.cm.UNIT_TYPES[ui];
		ret.trainUnts[i] = 0;
	}
	var q = Seed.queue_unt;
	for (i = 0; i < Cities.numCities; i++) { // each city
		cityID = 'city' + Cities.cities[i].id;
		q = Seed.queue_unt[cityID];
		if (q && q.length > 0) {
			for (qi = 0; qi < q.length; qi++)
				ret.trainUnts[q[qi][0]] += parseInt(q[qi][1]);
		}
	}
	return ret;
}
var fortNamesShort = {
		53: "Crossbows",
		55: "Trebuchet",
		60: "Trap",
		61: "Caltrops",
		62: "Spiked Barrier",
	}
	// returns {count, maxlevel}

function getCityBuilding(cityId, buildingId) {
	var b = Seed.buildings['city' + cityId];
	var ret = {
		count: 0,
		maxLevel: 0
	};
	for (var k in b) {
		if (b[k] && b[k][0] == buildingId) {
			++ret.count;
			if (parseInt(b[k][1]) > ret.maxLevel)
				ret.maxLevel = parseInt(b[k][1]);
		}
	}
	return ret;
}

function getCityPrestige(cityId) {
	return Seed.cityData.city[cityId].isPrestigeCity;
}
// example: https://www150.kingdomsofcamelot.com
function GetServerId() {
	var m = /^[a-zA-Z]+([0-9]+)\./.exec(document.location.hostname);
	if (m)
		return m[1];
	return '';
}

function logit(msg) {
	var serverID = GetServerId();
	var now = new Date();
	GM_log(serverID + ' @ ' + now.toTimeString().substring(0, 8) + '.' + now.getMilliseconds() + ': ' + msg);
}

function ById(id) {
	return document.getElementById(id);
}
/************ DEBUG WIN *************/
var debugWin = {
	popDebug: null,
	dbDefaultNot: 'tech,tutorial,items,quests,wilderness,wildDef,buildings,knights,allianceDiplomacies,appFriends,players',
	dbSelect: {},
	sortSeed: [],
	sortNonSeed: [],
	doit: function () {
		var t = debugWin;

		function syncBoxes() {
			for (var i = 0; i < t.sortSeed.length; i++) {
				var name = t.sortSeed[i];
				var box = document.getElementById('dbpop_' + name);
				box.checked = t.dbSelect[name];
			}
		}

		function clickedAll() {
			for (var k in t.dbSelect)
				t.dbSelect[k] = true;
			syncBoxes();
		}

		function clickedNone() {
			for (var k in t.dbSelect)
				t.dbSelect[k] = false;
			syncBoxes();
		}

		function clickedDefaults() {
			for (k in t.dbSelect)
				t.dbSelect[k] = true;
			var not = t.dbDefaultNot.split(',');
			for (var i = 0; i < not.length; i++)
				t.dbSelect[not[i]] = false;
			syncBoxes();
		}

		function clickedShow() {
			var resultsDiv = document.getElementById('idDebugResultsDiv')
			var s = '<PRE>';
			for (var i = 0; i < t.sortSeed.length; i++) {
				var name = t.sortSeed[i];
				var box = document.getElementById('dbpop_' + name);
				if (box.checked)
					s += name + " =\n" + inspect(Seed[name], 10, 1);
			}
			resultsDiv.innerHTML = s + '</PRE>';
		}

		function clickedShowNonSeed() {
			var resultsDiv = document.getElementById('idDebugResultsDiv');
			nsvalue = document.getElementById('dbnonseed').value;
			if (nsvalue != '') {
				val = unsafeWindow[nsvalue];
				valtype = typeof (val);
				resultsDiv.innerHTML = '<PRE>(' + valtype + ') ' + nsvalue + ((valtype == 'string') ? (" = " + val) : (" =\n" + inspect(val, 10, 1))) + '</PRE>';
			}
		}

		function clickedShowScripts() {
			var resultsDiv = document.getElementById('idDebugResultsDiv')
			var scripts = document.getElementsByTagName('script');
			var s = '';
			for (var i = 0; i < scripts.length; i++)
				if (scripts[i].src != null && scripts[i].src != '')
					s += '<A TARGET=_tab HREF="' + scripts[i].src + '">' + scripts[i].src + '</A><BR />';
			resultsDiv.innerHTML = s;
		}
		if (t.popDebug == null) {
			t.popDebug = new CPopup('db', 0, 45, 749, 900, true);
			t.popDebug.getTopDiv().innerHTML = '<DIV align=center><B>DEBUG</B></DIV>';
			var sl = 0;
			for (var k in Seed) {
				t.dbSelect[k] = true;
				t.sortSeed[sl] = k;
				sl++;
			}
			t.sortSeed.sort();
			sl = 0;
			for (var k in unsafeWindow) {
				kType = typeof (unsafeWindow[k]);
				if ((k.indexOf('actionlink_data') != 0) && (k != 'content') && (k != 'document') && (k.indexOf('feed') != 0) && (k.indexOf('frame') != 0) && (k != 'globalStorage') &&
					(k != 'g_mapObject') && (k != 'history') && (k != 'Modal') && (k != 'navigator') && (k != 'parent') && (k.indexOf('pb') != 0) && (k.indexOf('pt') != 0) && (k != 'seed') &&
					(k != 'self') && (k.indexOf('template_data') != 0) && (k != 'that') && (k != 'window') && (k != '_htmlElement') && (kType != 'function') && (kType != 'undefined')) {
					t.sortNonSeed[sl] = k;
					sl++;
				}
			}
			t.sortNonSeed.sort(function (x, y) {
				var a = String(x).toUpperCase();
				var b = String(y).toUpperCase();
				if (a > b) return 1;
				else if (a < b) return -1;
				else return 0;
			});
			var nsSelect = '<SELECT id="dbnonseed"><OPTION value="" ></option>';
			for (var i = 0; i < t.sortNonSeed.length; i++)
				nsSelect += '<OPTION value="' + t.sortNonSeed[i] + '" >' + t.sortNonSeed[i] + '</option>';
			nsSelect += '</SELECT>';
			var not = t.dbDefaultNot.split(',');
			for (var i = 0; i < not.length; i++)
				t.dbSelect[not[i]] = false;
			var m = '<DIV class=ptentry><B>Seed: </B><INPUT type=submit id=dbsuball value=ALL>&nbsp;<INPUT type=submit id=dbsubnone value=NONE>&nbsp;' +
				'<INPUT type=submit id=dbdefaults value=DEFAULTS>&nbsp;<INPUT type=submit id=dbsubdo value=SHOW>&nbsp;<INPUT type=submit id=dbsubscripts value=SCRIPTS><BR /><TABLE width=100%>';
			var cols = 5;
			var entries = t.sortSeed.length;
			var rows = parseInt(0.99 + entries / cols);
			for (var rowno = 1; rowno <= rows; rowno++) {
				m += '<TR>';
				for (colno = 1; colno <= cols; colno++) {
					var slvalue = rows * (colno - 1) + rowno - 1;
					m += ((slvalue < entries) ? ('<TD class=xtab><INPUT type=checkbox id="dbpop_' + t.sortSeed[slvalue] + '">&nbsp;' + t.sortSeed[slvalue] + '</TD>') : '<TD class=xtab></TD>');
				}
				m += '</TR>';
			}
			m += '</TABLE><B>Non-Seed: </B>' + nsSelect + '</DIV><DIV id="idDebugResultsDiv" style="width:738px; height:600px; max-height:600px; overflow-y:auto; white-space:pre-wrap;"></DIV>';
			t.popDebug.getMainDiv().innerHTML = m;
			document.getElementById('dbsuball').addEventListener('click', clickedAll, false);
			document.getElementById('dbsubnone').addEventListener('click', clickedNone, false);
			document.getElementById('dbdefaults').addEventListener('click', clickedDefaults, false);
			document.getElementById('dbsubdo').addEventListener('click', clickedShow, false);
			document.getElementById('dbsubscripts').addEventListener('click', clickedShowScripts, false);
			document.getElementById('dbnonseed').addEventListener('change', clickedShowNonSeed, false);
			syncBoxes();
		}
		t.popDebug.show(true);
	},
}

function saveOptions() {
	var serverID = GetServerId();
	GM_setValue('Options_' + serverID, JSON2.stringify(Options));
}

function readOptions() {
	var serverID = GetServerId();
	s = GM_getValue('Options_' + serverID);
	if (s != null) {
		opts = JSON2.parse(s);
		for (k in opts)
			Options[k] = opts[k];
	}
}

function readGlobalOptions() {
	GlobalOptions = JSON2.parse(GM_getValue('Options_??', '{}'));
}

function saveColors() {
	var serverID = GetServerId();
	GM_setValue('Colors_' + serverID, JSON2.stringify(Colors));
}

function readColors() {
	var serverID = GetServerId();
	s = GM_getValue('Colors_' + serverID);
	if (s != null) {
		opts = JSON2.parse(s);
		for (k in opts)
			Colors[k] = opts[k];
	} else {
		s = GM_getValue('Colors');
		if (s != null) {
			opts = JSON2.parse(s);
			for (k in opts)
				Colors[k] = opts[k];
		}
	}
}

function readAutoTrainOptions() {
	var serverID = GetServerId();
	s = GM_getValue('AutoTrainOptions_' + serverID);
	if (s != null) {
		opts = JSON2.parse(s);
		for (k in opts) {
			if (AutoTrainOptions[k] != undefined) {
				if (matTypeof(opts[k]) == 'object') {
					for (kk in opts[k])
						if (AutoTrainOptions[k][kk] != undefined)
							AutoTrainOptions[k][kk] = opts[k][kk];
				} else
					AutoTrainOptions[k] = opts[k];
			}
		}
	}
}

function saveAutoTrainOptions() {
	var serverID = GetServerId();
	GM_setValue('AutoTrainOptions_' + serverID, JSON2.stringify(AutoTrainOptions));
}

function readIRCOptions() {
	var serverID = GetServerId();
	s = localStorage.getItem('IRCOptions_' + serverID);
	if (s != null) {
		opts = JSON2.parse(s);
		for (k in opts) {
			if (IRCOptions[k] != undefined) {
				if (matTypeof(opts[k]) == 'object') {
					for (kk in opts[k])
						if (IRCOptions[k][kk] != undefined)
							IRCOptions[k][kk] = opts[k][kk];
				} else
					IRCOptions[k] = opts[k];
			}
		}
	}
}

function saveIRCOptions() {
	var serverID = GetServerId();
	localStorage.setItem('IRCOptions_' + serverID, JSON2.stringify(IRCOptions));
}

function readChatIconsOptions() {
	var serverID = GetServerId();
	s = GM_getValue('ChatIcons_' + serverID);
	if (s != null) {
		opts = JSON2.parse(s);
		for (k in opts) {
			ChatIcons[k] = opts[k];
		}
	}
}

function saveChatIconsOptions() {
	var serverID = GetServerId();
	GM_setValue('ChatIcons_' + serverID, JSON2.stringify(ChatIcons));
}
/***
 ***/
var myServers = { // incomplete, untested
	serverlist: null,
	get: function (notify) {
		if (myServers.serverlist) {
			notify(myServers.serverlist);
			return;
		}
		var params = uW.Object.clone(uW.g_ajaxparams);
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/myServers.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				logit(inspect(rslt, 3, 1));
				if (notify)
					notify(myServers.serverlist);
			},
			onFailure: function (rslt) {}
		});
	},
};

function createButton(label) {
	var a = document.createElement('a');
	a.className = 'button20';
	a.innerHTML = '<span style="color: #ff6">' + label + '</span>';
	return a;
}

function AddMainTabLink(text, eventListener, mouseListener) {
	var a = createButton(text);
	a.className = 'tab';
	var tabs = document.getElementById('main_engagement_tabs');
	if (!tabs) {
		tabs = document.getElementById('topnav_msg');
		if (tabs)
			tabs = tabs.parentNode;
	}
	if (tabs) {
		var e = tabs.parentNode;
		var gmTabs = null;
		for (var i = 0; i < e.childNodes.length; i++) {
			var ee = e.childNodes[i];
			//if (ee.tagName=='DIV') logit ("CHILD: "+  ee.tagName +' : '+ ee.className+' : '+ ee.id);      
			if (ee.tagName && ee.tagName == 'DIV' && ee.className == 'tabs_engagement' && ee.id != 'main_engagement_tabs') {
				gmTabs = ee;
				break;
			}
		}
		if (gmTabs == null) {
			gmTabs = document.createElement('div');
			gmTabs.className = 'tabs_engagement';
			gmTabs.style.background = '#ca5';
			tabs.parentNode.insertBefore(gmTabs, tabs);
			gmTabs.style.whiteSpace = 'normal';
			gmTabs.style.width = '735px';
			gmTabs.lang = 'en_PT';
		}
		gmTabs.style.height = '0%';
		gmTabs.style.overflow = 'auto';
		if (gmTabs.firstChild)
			gmTabs.insertBefore(a, gmTabs.firstChild);
		else
			gmTabs.appendChild(a);
		a.addEventListener('click', eventListener, false);
		if (mouseListener != null)
			a.addEventListener('mousedown', mouseListener, true);
		return a;
	}
	return null;
}

function coordLink(x, y) {
	var m = [];
	m.push('(<a onclick="ptGotoMapHide (');
	m.push(x);
	m.push(',');
	m.push(y);
	m.push('); return false">');
	m.push(x);
	m.push(',');
	m.push(y);
	m.push('</a>)');
	return m.join('');
}
uW.ptGotoMapHide = function (x, y) {
	try {
		uW.Modal.hideModal();
	} catch (e) {}
	try {
		Modal.hideModal();
	} catch (e) {}
	uW.ptGotoMap(x, y);
}
uW.ptGotoMap = function (x, y) {
	if (Options.hideOnGoto)
		hideMe();
	setTimeout(function () {
		document.getElementById('mapXCoor').value = x;
		document.getElementById('mapYCoor').value = y;
		uW.reCenterMapWithCoor();
		var a = document.getElementById("mod_views").getElementsByTagName("a");
		for (var b = 0; b < a.length; b++) {
			a[b].className = "buttonv2 nav h20"
		}
		document.getElementById('mod_views_map').className = "buttonv2 nav h20 sel";
		document.getElementById("maparea_city").style.display = 'none';
		document.getElementById("maparea_fields").style.display = 'none';
		document.getElementById("maparea_map").style.display = 'block';
		uW.tutorialClear()
	}, 0);
};
/**********************************************************************************/
function makeButton20(label) {
	var a = document.createElement('a');
	a.className = "button20 ptButton20";
	var s = document.createElement('span');
	s.innerHTML = label;
	a.appendChild(s);
	return a;
}

function strButton20(label, tags) {
	if (tags == null)
		tags = '';
	return ('<TABLE class=ptNoPad><TR><TD><A class="button20 ptButton20" ' + tags + '><SPAN>' + label + '</span></a></td></tr></table>');
}

function strButton14(label, tags) {
	if (tags == null)
		tags = '';
	return ('<A class="button14 ptButton20" ' + tags + '><SPAN>' + label + '</span></a>');
}

function cityStatusString(cs) {
	if (cs == 4)
		return 'V';
	if (cs == 3)
		return 'T';
	if (cs == 2)
		return 'BP';
	return 'N';
}
// Simple method, as if it were typed in thru DOM
function sendChat(msg) {
	document.getElementById("mod_comm_input").value = msg;
	uW.Chat.sendChat();
}
// works well, but message is not echoed back to local client
Chat = {
	params: null,
	sendWhisper: function (msg, who, notify) {
		this.params = uW.Object.clone(uW.g_ajaxparams);
		this.params.ctype = 3;
		this.params.name = who;
		this._sendit(msg, notify);
	},
	sendGlobal: function (msg, notify) {
		this.params = uW.Object.clone(uW.g_ajaxparams);
		this.params.ctype = 1;
		this._sendit(msg, notify);
	},
	sendAlliance: function (msg, notify) {
		this.params = uW.Object.clone(uW.g_ajaxparams);
		this.params.ctype = 2;
		this._sendit(msg, notify);
	},
	_sendit: function (msg, notify) {
		function strip(s) {
			return s.replace(/^\s+/, '').replace(/\s+$/, '');
		}
		this.params.comment = strip(msg);
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/sendChat.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: this.params,
			onSuccess: function (transport) {
				if (notify)
					notify();
			},
			onFailure: function (transport) {
				if (notify)
					notify();
			}
		});
	},
}

function doDefTrain(cityId, siege, unitId, num, notify) {
	var time = uW.modal_walls_traintime(unitId, num);
	var params = uW.Object.clone(uW.g_ajaxparams);
	params.cid = cityId;
	params.type = unitId;
	params.quant = num;
	params.items = siege;
	new MyAjaxRequest(uW.g_ajaxpath + "ajax/fortify.php" + uW.g_ajaxsuffix, {
		method: "post",
		parameters: params,
		onSuccess: function (rslt) {
			if (rslt.ok) {
				uW.seed.queue_fort["city" + cityId].push([unitId, num, rslt.initTS, parseInt(rslt.initTS) + time, 0, time, rslt.fortifyId]);
				if (notify != null)
					setTimeout(function () {
						notify(null);
					}, 500);
			} else {
				if (notify != null)
					setTimeout(function () {
						notify(rslt.errorMsg);
					}, 500);
			}
		},
		onFailure: function () {
			if (notify != null)
				notify(rslt.errorMsg);
		},
	});
}

function doTrain(cityId, tut, gamble, unitId, num, notify) {
	var time = uW.modal_barracks_traintime(unitId, num);
	var params = uW.Object.clone(uW.g_ajaxparams);
	params.cid = cityId;
	params.type = unitId;
	params.quant = num;
	params.items = tut;
	params.gambleId = gamble;
	new MyAjaxRequest(uW.g_ajaxpath + "ajax/train.php" + uW.g_ajaxsuffix, {
		method: "post",
		parameters: params,
		onSuccess: function (rslt) {
			if (rslt.ok) {
				for (var i = 1; i < 5; i++) {
					var resourceLost = parseInt(uW.unitcost["unt" + unitId][i]) * 3600 * parseInt(num);
					if (rslt.gamble) resourceLost = resourceLost * rslt.gamble[i];
					uW.seed.resources["city" + cityId]["rec" + i][0] = parseInt(uW.seed.resources["city" + cityId]["rec" + i][0]) - resourceLost;
				}
				uW.seed.citystats["city" + cityId].gold[0] = parseInt(uW.seed.citystats["city" + cityId].gold[0]) - parseInt(uW.unitcost["unt" + unitId][5]) * parseInt(num);
				uW.seed.citystats["city" + cityId].pop[0] = parseInt(uW.seed.citystats["city" + cityId].pop[0]) - parseInt(uW.unitcost["unt" + unitId][6]) * parseInt(num);
				if (unitId == 16)
					unsafeWindow.seed.items.i34001 = Number(parseInt(unsafeWindow.seed.items.i34001) - (parseInt(unsafeWindow.unitcost["unt" + unitId][11]["34001"]) * parseInt(num)));
				uW.seed.queue_unt["city" + cityId].push([unitId, num, rslt.initTS, parseInt(rslt.initTS) + time, 0, time, null]);
				if (notify != null)
					setTimeout(function () {
						notify(null);
					}, 500);
			} else {
				if (notify != null) {
					setTimeout(function () {
						notify(rslt.errorMsg);
					}, 500);
				}
			}
		},
		onFailure: function (o) {
			if (notify != null)
				notify(rslt.errorMsg);
		}
	});
}
/************  LIB classes/functions .... **************/
function getAbsoluteOffsets(e) {
	ret = {
		left: 0,
		top: 0
	};
	while (e.offsetParent) {
		if (e.style.position == 'absolute')
			break;
		ret.left += e.offsetLeft;
		ret.top += e.offsetTop;
		e = e.offsetParent;
	}
	return ret;
}
DebugTimer = {
	startTime: 0,
	start: function () {
		now = new Date();
		DebugTimer.startTime = now.getTime();
	},
	display: function (label, noReset) {
		now = new Date();
		elapsed = now.getTime() - DebugTimer.startTime;
		logit(label + ": " + elapsed / 1000);
		if (noReset === null || !noReset)
			DebugTimer.startTime = now.getTime();
	},
};

function debugPos(e) {
	return 'client - offset: ' + e.clientLeft + ',' + e.clientTop + ',' + e.clientWidth + ',' + e.clientHeight + ' - ' + e.offsetLeft + ',' + e.offsetTop + ',' + e.offsetWidth + ',' + e.offsetHeight + ' ' + e + ' --OP--> ' + e.offsetParent;
}

function debugElement(e) {
	var x = uW.Object.clone(e.wrappedJSObject);
	x.innerHTML = '';
	x.innerText = '';
	x.textContent = '';
	return inspect(x, 1, 1);
}

function searchDOM(node, condition, maxLevel, doMult) {
	var found = [];
	eval('var compFunc = function (node) { return (' + condition + ') }');
	doOne(node, 1);
	if (!doMult) {
		if (found.length == 0)
			return null;
		return found[0];
	}
	return found;

	function doOne(node, curLevel) {
		try {
			if (compFunc(node))
				found.push(node);
		} catch (e) {}
		if (!doMult && found.length > 0)
			return;
		if (++curLevel < maxLevel && node.childNodes != undefined)
			for (var c = 0; c < node.childNodes.length; c++)
				doOne(node.childNodes[c], curLevel);
	}
}

function getClientCoords(e) {
	if (e == null)
		return {
			x: null,
			y: null,
			width: null,
			height: null
		};
	var x = 0,
		y = 0;
	ret = {
		x: 0,
		y: 0,
		width: e.clientWidth,
		height: e.clientHeight
	};
	while (e.offsetParent != null) {
		ret.x += e.offsetLeft;
		ret.y += e.offsetTop;
		e = e.offsetParent;
	}
	return ret;
}

function htmlTitleLine(msg) {
	return '<TABLE width=100% cellspacing=0><TR><TD style="padding:0px" width=50%><HR></td><TD style="padding:0px">[ ' + msg + ' ]</td><TD style="padding:0px" width=50%><HR></td></tr></table>';
}
var WinManager = {
		wins: {}, // prefix : CPopup obj
		get: function (prefix) {
			var t = WinManager;
			return t.wins[prefix];
		},
		add: function (prefix, pop) {
			var t = WinManager;
			t.wins[prefix] = pop;
			if (uW.cpopupWins == null)
				uW.cpopupWins = {};
			uW.cpopupWins[prefix] = pop;
		},
		delete: function (prefix) {
			var t = WinManager;
			delete t.wins[prefix];
			delete uW.cpopupWins[prefix];
		}
	}
	// creates a 'popup' div
	// prefix must be a unique (short) name for the popup window

function CPopup(prefix, x, y, width, height, enableDrag, onClose) {
	var pop = WinManager.get(prefix);
	if (pop) {
		pop.show(false);
		return pop;
	}
	this.BASE_ZINDEX = 111111;
	// protos ...
	this.show = show;
	this.toggleHide = toggleHide;
	this.getTopDiv = getTopDiv;
	this.getMainDiv = getMainDiv;
	this.getLayer = getLayer;
	this.setLayer = setLayer;
	this.setEnableDrag = setEnableDrag;
	this.getLocation = getLocation;
	this.setLocation = setLocation;
	this.focusMe = focusMe;
	this.unfocusMe = unfocusMe;
	this.centerMe = centerMe;
	this.destroy = destroy;
	// object vars ...
	this.div = document.createElement('div');
	this.prefix = prefix;
	this.onClose = onClose;
	var t = this;
	this.div.className = 'CPopup ' + prefix + '_CPopup';
	this.div.id = prefix + '_outer';
	this.div.style.background = "#fff";
	this.div.style.zIndex = this.BASE_ZINDEX // KOC modal is 100210 ?
	this.div.style.display = 'none';
	this.div.style.width = width + 'px';
	this.div.style.height = height + 'px';
	this.div.style.position = "absolute";
	this.div.style.top = y + 'px';
	this.div.style.left = x + 'px';
	if (CPopUpTopClass == null)
		topClass = 'CPopupTop ' + prefix + '_CPopupTop';
	else
		topClass = CPopUpTopClass + ' ' + prefix + '_' + CPopUpTopClass;
	var m = '<TABLE cellspacing=0 width=100% height=100%><TR id="' + prefix + '_bar" class="' + topClass + '"><TD width=99% valign=bottom><SPAN id="' + prefix + '_top"></span></td>\
      <TD id=' + prefix + '_X align=right valign=middle onmouseover="this.style.cursor=\'pointer\'" style="color:#fff; background:#333; font-weight:bold; font-size:14px; padding:0px 5px; -moz-border-radius-topright: 20px;">x</td></tr>\
      <TR><TD height=100% valign=top class="CPopMain ' + prefix + '_CPopMain" colspan=2 id="' + prefix + '_main"></td></tr></table>';
	document.body.appendChild(this.div);
	this.div.innerHTML = m;
	document.getElementById(prefix + '_X').addEventListener('click', e_XClose, false);
	this.dragger = new CWinDrag(document.getElementById(prefix + '_bar'), this.div, enableDrag);
	this.div.addEventListener('mousedown', e_divClicked, false);
	WinManager.add(prefix, this);

	function e_divClicked() {
		t.focusMe();
	}

	function e_XClose() {
		t.show(false);
		if (t.onClose != null)
			t.onClose();
	}

	function focusMe() {
		t.setLayer(5);
		for (k in uW.cpopupWins) {
			if (k != t.prefix)
				uW.cpopupWins[k].unfocusMe();
		}
	}

	function unfocusMe() {
		t.setLayer(-5);
	}

	function getLocation() {
		return {
			x: parseInt(this.div.style.left),
			y: parseInt(this.div.style.top)
		};
	}

	function setLocation(loc) {
		t.div.style.left = loc.x + 'px';
		t.div.style.top = loc.y + 'px';
	}

	function destroy() {
		document.body.removeChild(t.div);
		WinManager.delete(t.prefix);
	}

	function centerMe(parent) {
		if (parent == null) {
			var coords = getClientCoords(document.body);
		} else
			var coords = getClientCoords(parent);
		var x = ((coords.width - parseInt(t.div.style.width)) / 2) + coords.x;
		var y = ((coords.height - parseInt(t.div.style.height)) / 2) + coords.y;
		if (x < 0)
			x = 0;
		if (y < 0)
			y = 0;
		t.div.style.left = x + 'px';
		t.div.style.top = y + 'px';
	}

	function setEnableDrag(tf) {
		t.dragger.setEnable(tf);
	}

	function setLayer(zi) {
		t.div.style.zIndex = '' + (this.BASE_ZINDEX + zi);
	}

	function getLayer() {
		return parseInt(t.div.style.zIndex) - this.BASE_ZINDEX;
	}

	function getTopDiv() {
		return document.getElementById(this.prefix + '_top');
	}

	function getMainDiv() {
		return document.getElementById(this.prefix + '_main');
	}

	function show(tf) {
		if (tf) {
			t.div.style.display = 'block';
			t.focusMe();
		} else {
			t.div.style.display = 'none';
		}
		return tf;
	}

	function toggleHide(t) {
		if (t.div.style.display == 'block') {
			return t.show(false);
		} else {
			return t.show(true);
		}
	}
}

function CWinDrag(clickableElement, movingDiv, enabled) {
	var t = this;
	this.setEnable = setEnable;
	this.setBoundRect = setBoundRect;
	this.debug = debug;
	this.dispEvent = dispEvent;
	this.lastX = null;
	this.lastY = null;
	this.enabled = true;
	this.moving = false;
	this.theDiv = movingDiv;
	this.body = document.body;
	this.ce = clickableElement;
	this.moveHandler = new CeventMove(this).handler;
	this.outHandler = new CeventOut(this).handler;
	this.upHandler = new CeventUp(this).handler;
	this.downHandler = new CeventDown(this).handler;
	this.clickableRect = null;
	this.boundRect = null;
	this.bounds = null;
	this.enabled = false;
	if (enabled == null)
		enabled = true;
	this.setEnable(enabled);

	function setBoundRect(b) { // this rect (client coords) will not go outside of current body
		this.boundRect = boundRect;
		this.bounds = null;
	}

	function setEnable(enable) {
		if (enable == t.enabled)
			return;
		if (enable) {
			clickableElement.addEventListener('mousedown', t.downHandler, false);
			t.body.addEventListener('mouseup', t.upHandler, false);
		} else {
			clickableElement.removeEventListener('mousedown', t.downHandler, false);
			t.body.removeEventListener('mouseup', t.upHandler, false);
		}
		t.enabled = enable;
	}

	function CeventDown(that) {
		this.handler = handler;
		var t = that;

		function handler(me) {
			if (DEBUG_TRACE_DRAG) t.dispEvent('eventDOWN', me);
			if (t.bounds == null) {
				t.clickableRect = getClientCoords(clickableElement);
				t.bodyRect = getClientCoords(document.body);
				if (t.boundRect == null)
					t.boundRect = t.clickableRect;
				if (DEBUG_TRACE_DRAG) logit('Clickable rect: ' + inspect(t.clickableRect, 3, 1));
				if (DEBUG_TRACE_DRAG) logit('Body rect: ' + inspect(t.bodyRect, 3, 1));
				if (DEBUG_TRACE_DRAG) logit('Bound rect: ' + inspect(t.boundRect, 3, 1));
				t.bounds = {
					top: 10 - t.clickableRect.height,
					bot: t.bodyRect.height - 25,
					left: 40 - t.clickableRect.width,
					right: t.bodyRect.width - 25
				};
				if (DEBUG_TRACE_DRAG) logit("BOUNDS: " + inspect(t.bounds, 8, 10));
			}
			if (me.button == 0 && t.enabled) {
				t.body.addEventListener('mousemove', t.moveHandler, true);
				t.body.addEventListener('mouseout', t.outHandler, true);
				t.lastX = me.clientX;
				t.lastY = me.clientY;
				t.moving = true;
			}
		}
	}

	function CeventUp(that) {
		this.handler = handler;
		var t = that;

		function handler(me) {
			if (DEBUG_TRACE_DRAG) t.dispEvent('eventUP', me);
			if (me.button == 0 && t.moving)
				_doneMoving(t);
		}
	}

	function _doneMoving(t) {
		if (DEBUG_TRACE_DRAG) logit('doneMoving');
		t.body.removeEventListener('mousemove', t.moveHandler, true);
		t.body.removeEventListener('mouseout', t.outHandler, true);
		t.moving = false;
	}

	function CeventOut(that) {
		this.handler = handler;
		var t = that;

		function handler(me) {
			//t.dispEvent ('eventOUT', me);
			if (me.button == 0) {
				t.moveHandler(me);
			}
		}
	}

	function CeventMove(that) {
		this.handler = handler;
		var t = that;

		function handler(me) {
			if (t.enabled && !t.wentOut) {
				//t.dispEvent ('eventMOVE', me);
				var newTop = parseInt(t.theDiv.style.top) + me.clientY - t.lastY;
				var newLeft = parseInt(t.theDiv.style.left) + me.clientX - t.lastX;
				if (newTop < t.bounds.top) { // if out-of-bounds...
					newTop = t.bounds.top;
					_doneMoving(t);
				} else if (newLeft < t.bounds.left) {
					newLeft = t.bounds.left;
					_doneMoving(t);
				} else if (newLeft > t.bounds.right) {
					newLeft = t.bounds.right;
					_doneMoving(t);
				} else if (newTop > t.bounds.bot) {
					newTop = t.bounds.bot;
					_doneMoving(t);
				}
				t.theDiv.style.top = newTop + 'px';
				t.theDiv.style.left = newLeft + 'px';
				t.lastX = me.clientX;
				t.lastY = me.clientY;
			}
		}
	}

	function debug(msg, e) {
		logit("*************** " + msg + " ****************");
		logit('clientWidth, Height: ' + e.clientWidth + ',' + e.clientHeight);
		logit('offsetLeft, Top, Width, Height (parent): ' + e.offsetLeft + ',' + e.offsetTop + ',' + e.offsetWidth + ',' + e.offsetHeight + ' (' + e.offsetParent + ')');
		logit('scrollLeft, Top, Width, Height: ' + e.scrollLeft + ',' + e.scrollTop + ',' + e.scrollWidth + ',' + e.scrollHeight);
	}

	function dispEvent(msg, me) {
		logit(msg + ' Button:' + me.button + ' Screen:' + me.screenX + ',' + me.screenY + ' client:' + me.clientX + ',' + me.clientY + ' rTarget: ' + me.relatedTarget);
	}
}

function inspect(obj, maxLevels, level, doFunctions) {
	var str = '',
		type, msg;
	if (level == null) level = 0;
	if (maxLevels == null) maxLevels = 1;
	if (maxLevels < 1)
		return 'Inspect Error: Levels number must be > 0';
	if (obj == null)
		return 'ERROR: Object is NULL\n';
	var indent = '';
	for (var i = 0; i < level; i++)
		indent += '  ';
	for (property in obj) {
		try {
			type = matTypeof(obj[property]);
			if (doFunctions == true && (type == 'function')) {
				str += indent + '(' + type + ') ' + property + "[FUNCTION]\n";
			} else if (type != 'function') {
				str += indent + '(' + type + ') ' + property + ((obj[property] == null) ? (': null') : ('')) + ' = ' + obj[property] + "\n";
			}
			if ((type == 'object' || type == 'array') && (obj[property] != null) && (level + 1 < maxLevels))
				str += inspect(obj[property], maxLevels, level + 1, doFunctions); // recurse
		} catch (err) {
			// Is there some properties in obj we can't access? Print it red.
			if (typeof (err) == 'string') msg = err;
			else if (err.message) msg = err.message;
			else if (err.description) msg = err.description;
			else msg = 'Unknown';
			str += '(Error) ' + property + ': ' + msg + "\n";
		}
	}
	str += "\n";
	return str;
}
Array.prototype.compare = function (testArr) {
	if (this.length != testArr.length) return false;
	for (var i = 0; i < testArr.length; i++) {
		if (this[i].compare) {
			if (!this[i].compare(testArr[i])) return false;
		}
		if (this[i] !== testArr[i]) return false;
	}
	return true;
}
String.prototype.entityTrans = {
	'&': '&amp;',
	'<': '&lt;',
	'>': '&gt;',
	'\"': '&quot;',
	'\'': '&#039',
	'<': '\\u003c',
	'/': '\\/',
	'\\': '\\\\',
	'\"': '\\\"',
	'{': '&#123;',
	'}': '&#125;'
};
String.prototype.htmlEntities = function () {
	var ret = this.toString();
	for (k in this.entityTrans)
		ret = ret.split(k).join(this.entityTrans[k]);
	return ret;
}
String.prototype.htmlSpecialCharsDecode = function () {
	var ret = this.toString();
	for (k in this.entityTrans)
		ret = ret.split(this.entityTrans[k]).join(k);
	return ret;
}
String.prototype.stripTags = function () {
	return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, '');
}
String.prototype.capitalize = function () {
	return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
}

function objectName(o) {
	var s = o.toString();
	return s.substr(7, s.length - 8);
}

function matTypeof(v) {
	if (v == undefined)
		return 'undefined';
	if (typeof (v) == 'object') {
		if (!v)
			return 'null';
		else if (v.constructor.toString().indexOf("Array") >= 0 && typeof (v.splice) == 'function')
			return 'array';
		else return 'object';
	}
	return typeof (v);
}

function addCommasInt(n) {
	nStr = Number(n, 10) + '';
	return addCommasWhole(nStr);
}

function addCommas(nStr) {
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function addCommasWhole(nStr) {
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1;
}

function htmlSelector(valNameObj, curVal, tags) {
	m = [];
	m.push('<SELECT');
	if (tags) {
		m.push(' ');
		m.push(tags);
	}
	for (k in valNameObj) {
		m.push('><OPTION ');
		if (k == curVal)
			m.push('SELECTED ');
		m.push('value="');
		m.push(k);
		m.push('">');
		m.push(valNameObj[k]);
		m.push('</option>');
	}
	m.push('</select>');
	return m.join('');
}

function toUnicode(theString) {
	var unicodeString = '';
	for (var i = 0; i < theString.length; i++) {
		var theUnicode = theString.charCodeAt(i);
		theUnicode = '&#' + theUnicode + ';';
		unicodeString += theUnicode;
	}
	return unicodeString;
}

function unixTime() {
	return parseInt(new Date().getTime() / 1000) + uW.g_timeoff;
}

function htmlOptions(a, curVal) {
	m = '';
	for (k in a)
		m += '<OPTION value="' + k + '"' + (k == curVal ? ' SELECTED' : '') + '>' + a[k] + '</option>';
	return m;
}

function getFunctionName(func) {
	var name = /\W*function\s+([\w\$]+)\(/.exec(func);
	if (!name)
		return '';
	return name[1];
}

function findAllBetween(txt, find1, find2) {
	var m = [];
	var last = 0;
	while ((i1 = txt.indexOf(find1, last)) >= 0 && (i2 = txt.indexOf(find2, i1)) >= 0) {
		m.push(txt.substring(i1 + find1.length, i2));
		last = i2 + find2.length;
	}
	return m;
}

function strUpTo(s, find) {
	var i = s.indexOf(find);
	if (i > 0)
		return s.substr(0, i);
	return s;
}
/********
 Xd Xh
 Xh Xm
 Xm Xs
 Xs
********/
function timestrShort(time) {
	time = parseInt(time);
	if (time > 86400) {
		var m = [];
		time /= 3600;
		m.push(parseInt(time / 24));
		m.push('d ');
		m.push(parseInt(time % 24));
		m.push('h ');
		return m.join('');
	} else
		return timestr(time);
}
/**********************
 part       full
 Xd Xh Xm   Xd Xh Xm Xs
 Xh Xm      Xh Xm Xs
 Xm Xs      Xm Xs
 Xs         Xs
**********************/
function timestr(time, full) {
	time = parseInt(time);
	var m = [];
	var t = time;
	if (t < 61)
		return t + 's';
	if (t > 86400) {
		m.push(parseInt(t / 86400));
		m.push('d ');
		t %= 86400;
	}
	if (t > 3600 || time > 3600) {
		m.push(parseInt(t / 3600));
		m.push('h ');
		t %= 3600;
	}
	m.push(parseInt(t / 60));
	m.push('m');
	if (full || time <= 3600) {
		m.push(' ');
		m.push(t % 60);
		m.push('s');
	}
	return m.join('');
}
/************  LIB singletons .... **************/
// TODO: fix REopening window
var WINLOG_MAX_ENTRIES = 1000; // TODO
var WinLog = {
	state: null,
	win: null,
	eOut: null,
	lastE: null,
	enabled: true,
	reverse: true,
	busy: false,
	isOpening: false,
	open: function () {
		var t = WinLog;

		function eventButClear() {
			var t = WinLog;
			t.lastE = null;
			t.eOut.innerHTML = '';
		}

		function eventButReverse() {
			var t = WinLog;
			if (t.busy)
				return;
			t.busy = true;
			if (t.reverse) {
				t.win.document.getElementById('wlRev').value = 'Top';
				t.reverse = false;
			} else {
				t.win.document.getElementById('wlRev').value = 'Bottom';
				t.reverse = true;
			}
			var n = t.eOut.childNodes.length;
			if (n < 2)
				return;
			for (i = n - 2; i >= 0; i--) {
				t.eOut.appendChild(t.eOut.childNodes[i]);
			}
			t.busy = false;
		}
		if (!t.win || t.win.closed) {
			t.isOpening = true;
			// Firefox bug??? It appears as if a new thread is started on open, withOUT reusing same window
			//t.win = window.open('', 'uwtrace', 'top=30,left=0,width=900,height=700,scrollbars=no,location=no,menubar=no,directories=no,status=no');
			t.win = new CPopup('ptwinlog', 0, 0, 500, 800, true, function () {
				t.win.destroy();
				t.win = null;
				t.win.closed = true;
			});
			t.win.show(true);
			t.isOpening = false;
			t.state = null;
		}
		if (t.state == null) {
			t.win.getMainDiv().innerHTML = '<STYLE>pre{margin:0px} hr{margin:3px; height:1px; border:0px; color:#cee; background-color:#cee}</style>\
        <BODY style="margin:0px; padding:0px; border:none">\
        <DIV id=winlogtop style="background-color:#d0d0d0; margin:0px; padding:0px; border:1px solid">\
        <INPUT id=wlClear type=submit value="Clear"> &nbsp; <INPUT id=wlRev type=submit value="Bottom"></div>\
        <DIV id=wlOut style="overflow-y:auto; overflow-x:auto; height:750px; max-height:800px; width:600px"></div></body>';
			document.getElementById('wlClear').addEventListener('click', eventButClear, false);
			document.getElementById('wlRev').addEventListener('click', eventButReverse, false);
			t.eOut = document.getElementById('wlOut');
			t.lastE = null;
			t.state = 1;
		}
	},
	writeText: function (msg) {
		WinLog.write(msg.htmlEntities());
	},
	write: function (msg) {
		var t = WinLog;
		if (!t.enabled || t.isOpening)
			return;
		t.open();
		var te = document.createElement('pre');
		var now = new Date();
		var m = [];
		var millis = now.getMilliseconds();
		m.push(now.toTimeString().substring(0, 8));
		m.push('.');
		if (millis < 100)
			m.push('0');
		if (millis < 10)
			m.push('0');
		m.push(millis);
		m.push(': ');
		m.push(msg);
		te.innerHTML = m.join('');
		if (t.reverse) {
			if (t.lastE == null) {
				t.eOut.appendChild(te);
				t.lastE = te;
			} else {
				t.eOut.insertBefore(te, t.lastE);
			}
			var hr = document.createElement('hr');
			t.eOut.insertBefore(hr, te);
			t.lastE = hr;
		} else {
			t.eOut.appendChild(te);
			t.eOut.appendChild(document.createElement('hr'));
		}
	},
};
/***** tower tab edits *****/
Tabs.Tower = {
	tabOrder: 41,
	cont: null,
	fixAvailable: {},
	tabDisabled: !ENABLE_ALERT_TO_CHAT,
	Providers: {
	0: { 'country': "--Country--", 'provider': "--Provider--" },
        1: { 'country': "AUSTRALIA", 'provider': "T-Mobile" },
        2: { 'country': "AUSTRALIA", 'provider': "Optus Zoo" },
        3: { 'country': "AUSTRIA", 'provider': "T-Mobile" },
        4: { 'country': "BULGARIA", 'provider': "Mtel" },
        5: { 'country': "BULGARIA", 'provider': "Globul" },
        6: { 'country': "CANADA", 'provider': "Aliant" },
        7: { 'country': "CANADA", 'provider': "Bell Mobility" },
        8: { 'country': "CANADA", 'provider': "Fido" },
        9: { 'country': "CANADA", 'provider': "MTS Mobility" },
        10: { 'country': "CANADA", 'provider': "Rogers Wireless" },
        11: { 'country': "CANADA", 'provider': "Sasktel Mobility" },
        12: { 'country': "CANADA", 'provider': "Telus" },
        13: { 'country': "CANADA", 'provider': "Virgin Mobile" },
        14: { 'country': "CANADA", 'provider': "Presidents Choice" },
        15: { 'country': "GERMANY", 'provider': "T-Mobile" },
        16: { 'country': "GERMANY", 'provider': "Vodafone" },
        17: { 'country': "GERMANY", 'provider': "O2" },
        18: { 'country': "GERMANY", 'provider': "E-Plus" },
        19: { 'country': "ICELAND", 'provider': "OgVodafone" },
        20: { 'country': "ICELAND", 'provider': "Siminn" },
        21: { 'country': "INDIA", 'provider': "Andhra Pradesh AirTel" },
        22: { 'country': "INDIA", 'provider': "Andhra Pradesh Idea Cellular" },
        23: { 'country': "INDIA", 'provider': "Chennal Skycell Airtel" },
        24: { 'country': "INDIA", 'provider': "Chennel RPG Cellular" },
        25: { 'country': "INDIA", 'provider': "Delhi Airtel" },
        26: { 'country': "INDIA", 'provider': "Delhi Hutch" },
        27: { 'country': "INDIA", 'provider': "Gujarat Idea Cellular" },
        28: { 'country': "INDIA", 'provider': "Gujaret Airtel" },
        29: { 'country': "INDIA", 'provider': "Gujaret Celforce" },
        30: { 'country': "INDIA", 'provider': "Goa Airtel" },
        31: { 'country': "INDIA", 'provider': "Goa BPL Mobile" },
        32: { 'country': "INDIA", 'provider': "Goa Idea Cellular" },
        33: { 'country': "INDIA", 'provider': "Haryana Airtel" },
        34: { 'country': "INDIA", 'provider': "Haryana Escotel" },
        35: { 'country': "INDIA", 'provider': "Himachal Pradesh Airtel" },
        36: { 'country': "INDIA", 'provider': "Karnataka Airtel" },
        37: { 'country': "INDIA", 'provider': "Kerala Airtel" },
        38: { 'country': "INDIA", 'provider': "Kerala Escotel" },
        39: { 'country': "INDIA", 'provider': "Kerala BPL Mobile" },
        40: { 'country': "INDIA", 'provider': "Kolkata Airtel" },
        41: { 'country': "INDIA", 'provider': "Madhya Pradesh Airtel" },
        42: { 'country': "INDIA", 'provider': "Maharashtra Airtel" },
        43: { 'country': "INDIA", 'provider': "Maharashtra BPL Mobile" },
        44: { 'country': "INDIA", 'provider': "Maharashtra Idea Cellular" },
        45: { 'country': "INDIA", 'provider': "Mumbai Airtel" },
        46: { 'country': "INDIA", 'provider': "Mumbai BPL Mobile" },
        47: { 'country': "INDIA", 'provider': "Punjab Airtel" },
        48: { 'country': "INDIA", 'provider': "Pondicherry BPL Mobile" },
        49: { 'country': "INDIA", 'provider': "Tamil Nadu Airtel" },
        50: { 'country': "INDIA", 'provider': "Tamil Nadu BPL Mobile" },
        51: { 'country': "INDIA", 'provider': "Tamil Nadu Aircel" },
        52: { 'country': "INDIA", 'provider': "Uttar Pradesh West Escotel" },
        53: { 'country': "IRELAND", 'provider': "Meteor" },
        54: { 'country': "IRELAND", 'provider': "Meteor MMS" },
        55: { 'country': "ITALY", 'provider': "TIM" },
        56: { 'country': "ITALY", 'provider': "Vodafone" },
        57: { 'country': "JAPAN", 'provider': "AU by KDDI" },
        58: { 'country': "JAPAN", 'provider': "NTT DoCoMo" },
        59: { 'country': "JAPAN", 'provider': "Vodafone Chuugoku/Western" },
        60: { 'country': "JAPAN", 'provider': "Vodafone Hokkaido" },
        61: { 'country': "JAPAN", 'provider': "Vodafone Hokuriko/Central North" },
        62: { 'country': "JAPAN", 'provider': "Vodafone Kansai/West, including Osaka" },
        63: { 'country': "JAPAN", 'provider': "Vodafone Kanto/Koushin/East including Tokyo" },
        64: { 'country': "JAPAN", 'provider': "Vodafone Kyuushu/Okinawa" },
        65: { 'country': "JAPAN", 'provider': "Vodafone Shikoku" },
        66: { 'country': "JAPAN", 'provider': "Vodafone Touhoku/Niigata/North" },
        67: { 'country': "JAPAN", 'provider': "Vodafone Toukai/Central" },
        68: { 'country': "JAPAN", 'provider': "Willcom" },
        69: { 'country': "JAPAN", 'provider': "Willcom di" },
        70: { 'country': "JAPAN", 'provider': "Willcom dj" },
        71: { 'country': "JAPAN", 'provider': "Willcom dk" },
        72: { 'country': "NETHERLANDS", 'provider': "T-Mobile" },
        73: { 'country': "NETHERLANDS", 'provider': "Orange" },
        74: { 'country': "SINGAPORE", 'provider': "M1" },
        75: { 'country': "SOUTH AFRICA", 'provider': "Vodacom" },
        76: { 'country': "SPAIN", 'provider': "Telefonica Movistar" },
        77: { 'country': "SPAIN", 'provider': "Vodafone" },
        78: { 'country': "SWEDEN", 'provider': "Tele2" },
        79: { 'country': "UNITED STATES", 'provider': "Teleflip" },
        80: { 'country': "UNITED STATES", 'provider': "Alltel" },
        81: { 'country': "UNITED STATES", 'provider': "Ameritech" },
        82: { 'country': "UNITED STATES", 'provider': "ATT Wireless" },
        83: { 'country': "UNITED STATES", 'provider': "Bellsouth" },
        84: { 'country': "UNITED STATES", 'provider': "Boost" },
        85: { 'country': "UNITED STATES", 'provider': "CellularOne" },
        86: { 'country': "UNITED STATES", 'provider': "CellularOne MMS" },
        87: { 'country': "UNITED STATES", 'provider': "Cingular" },
        88: { 'country': "UNITED STATES", 'provider': "Edge Wireless" },
        89: { 'country': "UNITED STATES", 'provider': "Sprint PCS" },
        90: { 'country': "UNITED STATES", 'provider': "T-Mobile" },
        91: { 'country': "UNITED STATES", 'provider': "Metro PCS" },
        92: { 'country': "UNITED STATES", 'provider': "Nextel" },
        93: { 'country': "UNITED STATES", 'provider': "O2" },
        94: { 'country': "UNITED STATES", 'provider': "Orange" },
        95: { 'country': "UNITED STATES", 'provider': "Qwest" },
        96: { 'country': "UNITED STATES", 'provider': "Rogers Wireless" },
        97: { 'country': "UNITED STATES", 'provider': "Telus Mobility" },
        98: { 'country': "UNITED STATES", 'provider': "US Cellular" },
        99: { 'country': "UNITED STATES", 'provider': "Verizon" },
        100: { 'country': "UNITED STATES", 'provider': "Virgin Mobile" },
        101: { 'country': "UNITED KINGDOM", 'provider': "O2 1" },
        102: { 'country': "UNITED KINGDOM", 'provider': "O2 2" },
        103: { 'country': "UNITED KINGDOM", 'provider': "Orange" },
        104: { 'country': "UNITED KINGDOM", 'provider': "T-Mobile" },
        105: { 'country': "UNITED KINGDOM", 'provider': "Virgin Mobile" },
        106: { 'country': "UNITED KINGDOM", 'provider': "Vodafone" },
        107: { 'country': "BELGIUM", 'provider': "mobistar" },
        108: { 'country': "GERMANY", 'provider': "1und1" },
        109: { 'country': "UNITED STATES", 'provider': "MyCricket" }
	},

	init: function (div) {
		var t = Tabs.Tower;
		t.cont = div;
		try {
			m = '<TABLE class=ptTab><TR><TD colspan=2><B>Alliance Report Scanner:</b></td></tr>';
			m += '<TR><TD><INPUT id=togEnhanceAR type=checkbox /></td><TD>Enable post of Alliance Reports to Alliance Chat</td></tr>\
		   <TR><TD></td><TD><TABLE>\
		    <TR><TD>Min troops: <INPUT id=ptalertmtroops type=text size=6 value=' + Options.alertmtroops + ' /></TD></TR>\
			<TR><TD>Scan interval: <INPUT id=ptalertinterval type=text size=3 value=' + Options.alertinterval + ' /> seconds\
			<TR><TD><INPUT id=ptalerttext type=checkbox ' + (Options.celltext.enable ? 'CHECKED ' : '') + '/> Send text on alert</td></tr>\
			<TR><TD colspan=2><table><tr><td align=left>Text message alert to: <INPUT id=ptnum1 type=text size=4 maxlength=4 value="' + Options.celltext.num1 + '"  ' + (Options.celltext.provider == 0 ? 'DISABLED' : '') + '\> &nbsp;<INPUT id=ptnum2 type=text size=3 maxlength=3 value="' + Options.celltext.num2 + '"  ' + (Options.celltext.provider == 0 ? 'DISABLED' : '') + '\> &nbsp;<INPUT id=ptnum3 type=text size=4 maxlength=4 value="' + Options.celltext.num3 + '"  ' + (Options.celltext.provider == 0 ? 'DISABLED' : '') + '\></td></tr>\
			<TR><TD align=left>Country: <select id="ptfrmcountry">';
			for (var i in t.Providers) {
				var ret = m.indexOf(t.Providers[i].country);
				if (ret == -1) {
					if (t.Providers[i].country == t.Providers[Options.celltext.provider].country) {
						m += '<option value="' + t.Providers[i].country + '" selected="selected">' + t.Providers[i].country + '</option>'; // Load Previous Provider Selection
					} else {
						m += '<option value="' + t.Providers[i].country + '">' + t.Providers[i].country + '</option>';
					}
				}
			}
			m += '</select>\
			<select id="ptfrmprovider" ' + (Options.celltext.provider == 0 ? 'DISABLED' : '') + '><option value=0 >--Provider--</option>';
			for (var i in t.Providers) {
				if (t.Providers[i].country == t.Providers[Options.celltext.provider].country)
					if (Options.celltext.provider == i)
						m += '<option value="' + i + '" selected="selected">' + t.Providers[i].provider + '</option>'; // Load Previous Provider Selection
					else
						m += '<option value="' + i + '">' + t.Providers[i].provider + '</option>';
			}
			m += '</select></td></tr></table></td></tr></table></td></tr></table>';
			m += '<TABLE><TR><TD><BR><B>Extra Features:</b></td></tr>\
        		<TR><TD> Use Dove of Peace <INPUT id=verifyDove type=submit value="Press to Use Dove" \> (Opens a confirmation window)</td></tr></table>';
			t.cont.innerHTML = m;
			document.getElementById('ptalerttext').addEventListener('change', function (e) {
				Options.celltext.enable = e.target.checked;
			}, false);
			document.getElementById('ptfrmcountry').addEventListener('change', t.setCountry, false);
			document.getElementById('ptfrmprovider').addEventListener('change', t.setProvider, false);
			document.getElementById('ptnum1').addEventListener('change', t.phonenum, false);
			document.getElementById('ptnum2').addEventListener('change', t.phonenum, false);
			document.getElementById('ptnum3').addEventListener('change', t.phonenum, false);
			document.getElementById('ptalertinterval').addEventListener('change', function (e) {
				Options.alertinterval = parseInt(e.target.value);
			}, false);
			document.getElementById('ptalertmtroops').addEventListener('change', function (e) {
				Options.alertmtroops = parseInt(e.target.value);
			}, false);
			t.togOpt('togEnhanceAR', 'EnhanceAR', AllianceReportsCheck.enable);
			document.getElementById('verifyDove').addEventListener('click', t.verifyDove, false);
		} catch (e) {
			new CdialogCancelContinue('<PRE>' + inspect(e, 3, 1) + '</pre>', null, null, true);
			t.cont.innerHTML = '<PRE>' + e.name + ' : ' + e.message + '</pre>';
		}
	},
	phonenum: function () {
		Options.celltext.num1 = document.getElementById('ptnum1').value;
		Options.celltext.num2 = document.getElementById('ptnum2').value;
		Options.celltext.num3 = document.getElementById('ptnum3').value;
	},
	setCountry: function () {
		var t = Tabs.Tower;
		var myselect = document.getElementById("ptfrmprovider");
		myselect.innerHTML = '<option value=0 >--Provider--</option>';
		myselect.disabled = true;
		for (var i in t.Providers) {
			if (t.Providers[i].country == document.getElementById("ptfrmcountry").value) {
				var addoption = document.createElement('option');
				addoption.value = i;
				addoption.text = t.Providers[i].provider;
				myselect.add(addoption, null) //add new option to end of "Providers"
			}
		}
		myselect.disabled = false;
	},
	setProvider: function () {
		var ddProvider = document.getElementById("ptfrmprovider").wrappedJSObject;
		Options.celltext.provider = ddProvider.options[ddProvider.selectedIndex].value;
		if (ddProvider.selectedIndex > 0) {
			document.getElementById("ptnum1").disabled = false;
			document.getElementById("ptnum2").disabled = false;
			document.getElementById("ptnum3").disabled = false;
		} else {
			document.getElementById("ptnum1").disabled = true;
			document.getElementById("ptnum2").disabled = true;
			document.getElementById("ptnum3").disabled = true;
		}
		//alert(Options.celltext.provider);
	},
	hide: function () {},
	show: function () {},
	togOpt: function (checkboxId, optionName, callEnable, callIsAvailable) {
		var t = Tabs.Tower;
		var checkbox = document.getElementById(checkboxId);
		if (callIsAvailable && callIsAvailable() == false) {
			checkbox.disabled = true;
			return;
		}
		if (Options[optionName])
			checkbox.checked = true;
		checkbox.addEventListener('change', new eventToggle(checkboxId, optionName, callEnable).handler, false);

		function eventToggle(checkboxId, optionName, callOnChange) {
			this.handler = handler;
			var optName = optionName;
			var callback = callOnChange;

			function handler(event) {
				Options[optionName] = this.checked;
				saveOptions();
				if (callback != null)
					callback(this.checked);
			}
		}
	},

	useDove: function () {
		var t = Tabs.Tower;
		t.doveStatus = ById('verifyDiv');
		var params = uW.Object.clone(uW.g_ajaxparams);
		new MyAjaxRequest(uW.g_ajaxpath + "ajax/doveOut.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				if (rslt.ok) {
					t.doveStatus.innerHTML = "<center><font size='3px'><b>Dove Success!</b></font></center>";
				} else {
					t.doveStatus.innerHTML = "<center><font size='3px'><b>Dove Fail!</b></font></center>";
				}
			},
			onFailure: function () {}
		});
	},

	verifyDove: function () {
		var t = Tabs.Tower;
		var popDove = null;
		popDove = new CPopup('ptVerifyDove', 0, -100, 500, 50, true, function () {
			clearTimeout(1000);
		});
		popDove.centerMe(mainPop.getMainDiv());
		var m = '<DIV style="max-height:50px; height:50px; overflow-y:auto"><TABLE align=center cellpadding=0 cellspacing=0 width=100% class="pbShowBarbs" id="pbBars">';
		m += '<tr><TD align=center><b> ARE YOU SURE? </b> Click if yes, close if no <INPUT id=useDove type=submit value="YESSSS!!!!" \></td></tr>';
		m += '<tr><td align=center><div id=verifyDiv style="overflow-y:auto; max-height:20px; height: 20px;"></div></td></tr>';
		popDove.getMainDiv().innerHTML = '</table></div>' + m;
		popDove.show(true);
		document.getElementById('useDove').addEventListener('click', t.useDove, false);
	},

}
var AllianceReportsCheck = {
	aRpt: {},
	init: function () {
		var t = AllianceReportsCheck;
		var b = GM_getValue('allianceRpt_' + GetServerId());
		if (b != null)
			t.aRpt = JSON2.parse(b);
		else {
			t.aRpt = {};
		}
		t.enable(Options.EnhanceAR);
	},
	enable: function (tf) {
		var t = AllianceReportsCheck;
		if (Options.EnhanceAR)
			t.checkAllianceReport();
		setTimeout(function () {
			t.enable(Options.EnhaceAR);
		}, parseInt((Math.random() * 15 * 1000) + (Options.alertinterval * 1000)));
	},
	checkAllianceReport: function () {
		var t = AllianceReportsCheck;
		var params = unsafeWindow.Object.clone(unsafeWindow.g_ajaxparams);
		params.group = "a";
		new MyAjaxRequest(unsafeWindow.g_ajaxpath + "ajax/listReports.php" + unsafeWindow.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (rslt) {
				t.parseAReports(rslt.arReports, rslt.arPlayerNames, rslt.arAllianceNames, rslt.arCityNames, rslt.totalPages);
			},
			onFailure: function (rslt) {},
		}, false);
	},
	parseAReports: function (ar, playerNames, allianceNames, cityNames, totalPages) {
		var t = AllianceReportsCheck;
		var myAllianceId = getMyAlliance()[0];
		var rptkeys = unsafeWindow.Object.keys(ar);
		if (matTypeof(ar) != 'array') {
			for (var i = 0; i < rptkeys.length; i++) {
				var rpt = ar[rptkeys[i]];
				rpt.side0AllianceId = parseInt(rpt.side0AllianceId);
				var targetDiplomacy = getDiplomacy(rpt.side0AllianceId);
				if (rpt.side1AllianceId != myAllianceId) {
					var ID = rpt.reportId;
					if (t.aRpt["a" + ID] != null)
						return;
					if (rpt.marchType == 3)
						atkType = 'scouted';
					else if (rpt.marchType == 4)
						atkType = 'attacked';
					if (rpt.side0TileType > 50)
						target = "city";
					else if (rpt.side0TileType <= 50)
						target = "wild";
					if (rpt.side1AllianceId == 0)
						var allianceName = 'Undefined';
					else
						var allianceName = allianceNames["a" + rpt.side1AllianceId];
					var date = unsafeWindow.formatDateByUnixTime(rpt.reportUnixTime);
					var msg = 'Report No: ' + rpt.reportId + ' ' + date + ' : ' + playerNames['p' + rpt.side0PlayerId] + '\'s ' + target + ' at ' + rpt.side0XCoord + ',' + rpt.side0YCoord + ' has been ' + atkType + ' by ' + playerNames["p" + rpt.side1PlayerId] + ' at ' + rpt.side1XCoord + ',' + rpt.side1YCoord + ' of ' + allianceName + '(' + getDiplomacy(rpt.side1AllianceId) + ')';
					t.fetchreport(ID, rpt, msg, playerNames, cityNames);
					t.addAllianceReport(rpt);
				}
			}
		}
	},
	addAllianceReport: function (rpt) {
		t = AllianceReportsCheck;
		var ID = rpt.reportId;
		t.aRpt["a" + ID] = rpt.reportUnixTime;
		var now = unixTime() - (5 * 24 * 60 * 60);
		for (k in t.aRpt) {
			if (t.aRpt[k] < now)
				delete t.aRpt[k];
		}
		var string = JSON2.stringify(t.aRpt);
		//t.towerMarches['m'+m.mid]
		setTimeout(function () {
			GM_setValue("allianceRpt_" + GetServerId(), string);
		}, 0);
	},
	postToCell: function (m, playerNames, cityNames) {
		var t = AllianceReportsCheck;
		var data = [];
		if (m.marchType == 3) {
			data.atkType = 'scout';
		} else if (m.marchType == 4) {
			data.atkType = 'atk';
		} else {
			return;
		}
		if (m.side0TileType > 50)
			data.target = 'city (' + m.side0XCoord + ',' + m.side0YCoord + ')';
		else {
			data.target = 'wild (' + m.side0XCoord + ',' + m.side0YCoord + ')';
		}
		data.who = playerNames["p" + m.side1PlayerId] + ' (' + m.side1XCoord + ',' + m.side1YCoord + ')';
		//data.arrival = unsafeWindow.timestr(parseInt(m.reportUnixTime - unixTime()));
		data.arrival = unsafeWindow.formatDateByUnixTime(m.reportUnixTime);
		data.totTroops = ' ';
		data.provider = Options.celltext.provider;
		data.num1 = Options.celltext.num1;
		data.num2 = Options.celltext.num2;
		data.num3 = Options.celltext.num3;
		data.serverId = GetServerId();
		data.player = playerNames['p' + m.side0PlayerId];
		data.city = cityNames['c' + m.side0CityId];
		GM_xmlhttpRequest({
			method: 'POST',
			url: 'https://baos.kocscripters.com/index.php',
			headers: {
				'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
			},
			data: implodeUrlArgs(data),
		})
	},
	fetchreport: function (rpId, rpt, msg, playerNames, cityNames) {
		var t = AllianceReportsCheck;
		if (Options.alertmtroops == 0) {
			var automsg = sendChat('/a ' + msg);
			if (Options.celltext.enable)
				t.postToCell(rpt, playerNames, cityNames);
			if (Options.alertConfig.sound)
				AudioAlert.sound(true);
		} else {
			var params = uW.Object.clone(uW.g_ajaxparams);
			params.rid = rpId;
			new MyAjaxRequest(uW.g_ajaxpath + "ajax/fetchReport.php" + uW.g_ajaxsuffix, {
				method: "post",
				parameters: params,
				onSuccess: function (rslt) {
					var troops = rslt.detail.fght.s1;
					var trooptot = 0;
					for (i in troops) {
						trooptot += Number(troops[i][0]);
					}
					if (Options.alertmtroops > trooptot) return;
					var automsg = sendChat('/a ' + msg + ' troops ' + trooptot);
					if (Options.celltext.enable)
						t.postToCell(rpt, playerNames, cityNames);
					if (Options.alertConfig.sound)
						AudioAlert.sound(true);
				},
				onFailure: function () {},
			}, false);
		}
	},
}

function reloadKOC() {
	var serverId = GetServerId();
	if (serverId == '??') window.location.reload(true);
	var goto = 'https://apps.facebook.com/kingdomsofcamelot/?s=' + serverId;
	var t = '<FORM target="_top" action="' + goto + '" method=post><INPUT id=xxpbButReload type=submit value=RELOAD><INPUT type=hidden name=s value="' + serverId + '"</form>';
	var e = document.createElement('div');
	e.innerHTML = t;
	document.body.appendChild(e);
	setTimeout(function () {
		document.getElementById('xxpbButReload').click();
	}, 0);
}

function formatUnixTime(unixTimeString, format) {
	var rtn = unsafeWindow.formatDateByUnixTime(unixTimeString);
	/*if (format=='24hour') {
		if (rtn.substr(14,2)=='AM')
			rtn = rtn.substr(0,13);
		else
			rtn = rtn.substr(8,2)+' '+rtn.substr(0,8)+(parseInt(rtn.substr(8,2))+12)+rtn.substr(10,3);
	} */
	return rtn;
}
var cdtd = {
	views: null,
	init: function () {
		var t = cdtd;
		t.views = new CalterUwFunc("citysel_click", [
			[/cm\.PrestigeCityView\.render\(\)/im, 'cm.PrestigeCityView.render();cdtdhook();']
		]);
		unsafeWindow.cdtdhook = t.citychange;
		if (Options.EnhCBtns) {
			t.views.setEnable(true);
			unsafeWindow.update_citylist2 = unsafeWindow.update_citylist;
			unsafeWindow.update_citylist = function (e) {
				unsafeWindow.update_citylist2(e);
				cdtd.drawdefendstatus();
			};
			if (Options.ColrCityBtns) t.replace();
			t.drawdefendstatus();
		};
	},
	citychange: function () {
		cdtd.drawdefendstatus();
		Tabs.Options.checkAscension(); // ascension expiry tied into enhanced city buttons
	},
	drawdefendstatus: function () {
		var t = cdtd;
		for (i = 0; i < unsafeWindow.seed.cities.length; i++) {
			var cityidx = i + 1;
			var city = document.getElementById('citysel_' + cityidx);
			if (!city) {
				setTimeout(t.drawdefendstatus, 100);
				return;
			}
			var cityid = 'city' + unsafeWindow.seed.cities[i][0];
			city.style.border = '2px inset';
			city.style.display = 'inline'; // NEED HELP HERE.. CSS EXPERTS??
			//var tw = Math.floor((Number(document.getElementById('mod_citylist').offsetWidth)-18.5)/9);
			city.style.width = 10 + '%';
			//city.style.height = tw+'px';
			//city.style.boxShadow='inset 0px 0px 0px 0px';
			//city.style.box-shadow='inset 0px 0px 0px 0px';
			if (unsafeWindow.seed.citystats[cityid].gate == 0) {
				city.style.color = 'blue';
			} else {
				city.style.color = 'red';
			}
			if (Options.DbClkDefBtns) {
				city.ondblclick = function () {
					logit('id is ' + this.id);
					logit('target is ' + this.name);
					t.setdefendstatus(this.name);
					//setTimeout(t.drawdefendstatus,1000);
				};
			}
		}
	},
	setdefendstatus: function (city) {
		var t = cdtd;
		var state = 1;
		if (uW.seed.citystats["city" + city].gate != 0)
			state = 0;
		var params = uW.Object.clone(uW.g_ajaxparams);
		params.cid = city;
		params.state = state;
		new AjaxRequest(uW.g_ajaxpath + "ajax/gate.php" + uW.g_ajaxsuffix, {
			method: "post",
			parameters: params,
			onSuccess: function (message) {
				var rslt = eval("(" + message.responseText + ")");
				if (rslt.ok) {
					uW.seed.citystats["city" + city].gate = state;
					t.drawdefendstatus();
				}
			},
			onFailure: function () {
				t.drawdefendstatus();
			},
		});
	},
	// Nico's code with revised colors
	insert: function () {
		var t = cdtd;
		for (i = 0; i < unsafeWindow.seed.cities.length; i++) {
			color = "black";
			cityID = unsafeWindow.seed.cities[i][0];
			if (unsafeWindow.seed.cityData.city[cityID].isPrestigeCity) {
				if (unsafeWindow.seed.cityData.city[cityID].prestigeInfo.prestigeType) {
					switch (parseInt(unsafeWindow.seed.cityData.city[cityID].prestigeInfo.prestigeType)) {
					case 1:
						color = "#228b22";
						break;
					case 2:
						color = "#A944DB";
						break;
					case 3:
						color = "#E36600";
						break;
					}
				}
			}
			document.getElementById('mod_citylist').children[i].innerHTML = "<SPAN><FONT fontFamily='georgia,​arial,​sans-serif' font-weight=700 font-size=10px color=" + color + ">" + unsafeWindow.roman[i] + "</font></span>";
		}
	},
	replace: function () {
		var t = cdtd;
		var oldFunction = unsafeWindow.update_citylist;
		unsafeWindow.update_citylist = function () {
			t.insert();
			return oldFunction();
		};
	},
}

function CheckCityMarches(cityID) {
	var Counter = 0;
	if (Seed.queue_atkp['city' + cityID] != undefined) {
		for (atkp in Seed.queue_atkp['city' + cityID])
			if (Seed.queue_atkp['city' + cityID][atkp]["marchUnixTime"]) Counter++;
	} else Counter = 0;
	return Counter;
}

function getRallypoint(cityId) {
	var rallypointlevel = 0;
	for (var o in Seed.buildings["city" + cityId]) {
		var buildingType = parseInt(Seed.buildings["city" + cityId][o][0]);
		var buildingLevel = parseInt(Seed.buildings["city" + cityId][o][1]);
		if (buildingType == 12) {
			rallypointlevel = parseInt(buildingLevel);
			if (rallypointlevel == 12) rallypointlevel = 11;
		}
	}
	if (Seed.cityData.city[cityId].isPrestigeCity) rallypointlevel += 3;
	return rallypointlevel;
}
var Market = new CalterUwFunc('modal_marketplace', [
	[/maxlength..\d./gim, '']
]);
Market.setEnable(true);

function Sendcourtdata(courtdata) {return; // no send data to kocscripters.com
	if (Math.floor((Math.random() * 1000) + 1) > throttle) return;
	var params = {};
	params.courtdata = btoa(RawDeflate.deflate(JSON.stringify(courtdata)));
	params.gz = true;
	params.server = Number(GetServerId());
	params.tvuid = Number(unsafeWindow.tvuid);
	GM_xmlhttpRequest({
		method: 'POST',
		url: 'https://kocscripters.com/courtdat.php',
		headers: {
			'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
		},
		data: implodeUrlArgs(params),
		onload: function (message) {
			if (message.status != 200) throttle = 0;
			else {
				var rslt = eval("(" + message.responseText + ")");
				if (rslt.ok) throttle = Number(rslt.throttle);
			};
		},
	})
};

function getDST(today) {
	var yr = today.getFullYear();
	var dst_start = new Date("March 14, " + yr + " 02:00:00"); // 2nd Sunday in March can't occur after the 14th 
	var dst_end = new Date("November 07, " + yr + " 02:00:00"); // 1st Sunday in November can't occur after the 7th
	var day = dst_start.getDay(); // day of week of 14th
	dst_start.setDate(14 - day); // Calculate 2nd Sunday in March of this year
	day = dst_end.getDay(); // day of the week of 7th
	dst_end.setDate(7 - day); // Calculate first Sunday in November of this year
	var dstadj = 0;
	if (today >= dst_start && today < dst_end) { //does today fall inside of DST period?
		dstadj = (3600); // 60 mins!
	}
	return dstadj;
}

function MonitorLinkUID(n) {
	var m = [];
	m.push(n);
	if (uW.btLoaded) {
		m.push('&nbsp;<a onclick="btMonitorExternalCallUID (\'');
		m.push(n);
		m.push('\'); return false">');
		m.push('(Monitor)');
		m.push('</a>');
	}
	return m.join('');
}

ptStartup();